/******************************************************************************* * Copyright (c) 2008 Pierre-Antoine Grégoire. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Pierre-Antoine Grégoire - initial API and implementation *******************************************************************************/ package org.org.eclipse.dws.ui.internal.wizards.pages; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.net.HttpURLConnection; import java.net.InetSocketAddress; import java.net.MalformedURLException; import java.net.Proxy; import java.net.URISyntaxException; import java.net.URL; import java.util.ArrayList; import java.util.HashSet; import java.util.Queue; import java.util.Set; import org.apache.log4j.Logger; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.preference.PreferenceDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseListener; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Link; import org.eclipse.swt.widgets.TabFolder; import org.eclipse.swt.widgets.TabItem; import org.eclipse.ui.dialogs.PreferencesUtil; import org.org.eclipse.core.ui.dialogs.ErrorDialog; import org.org.eclipse.core.ui.dialogs.InfoDialog; import org.org.eclipse.core.utils.platform.dialogs.selection.IListDialogField; import org.org.eclipse.core.utils.platform.fields.ComboDialogField; import org.org.eclipse.core.utils.platform.fields.IDialogField; import org.org.eclipse.core.utils.platform.fields.StringDialogField; import org.org.eclipse.core.utils.platform.tools.IOToolBox; import org.org.eclipse.core.utils.platform.wizards.StatusInfo; import org.org.eclipse.core.utils.platform.wizards.page.WizardContentsHelper; import org.org.eclipse.dws.core.DWSCorePlugin; import org.org.eclipse.dws.core.internal.bridges.RepositoryModelPersistence; import org.org.eclipse.dws.ui.internal.wizards.NewRepositoryWizard; import org.org.eclipse.dws.ui.internal.wizards.WizardsMessages; import org.org.repository.crawler.items.IHttpCrawledRepositorySetup; import org.org.repository.crawler.items.IPatternSet; import org.org.repository.crawler.items.immutable.ImmutablePatternSet; import org.org.repository.crawler.items.mutable.AbstractCrawledRepositorySetup; import org.org.repository.crawler.items.mutable.HttpCrawledRepositorySetup; import org.org.repository.crawler.items.mutable.PatternSet; import org.org.repository.crawler.mapping.Entry; import org.org.repository.crawler.maven2.model.protocolplugins.HttpRepositoryBrowserPlugin; /** * The Class HttpRepositoryInfosWizardPage. * * @author pagregoire */ public class HttpRepositoryInfosWizardPage extends AbstractRepositoryInfosWizardPage<IHttpCrawledRepositorySetup> { /** * The Class ScanForEntriesRunnableWithProgress. */ private final class ScanForEntriesRunnableWithProgress implements IRunnableWithProgress { /** The http repository browser plugin. */ private HttpRepositoryBrowserPlugin httpRepositoryBrowserPlugin; /** * Run. * * @param monitor * the monitor * * @throws InvocationTargetException * the invocation target exception * @throws InterruptedException * the interrupted exception * * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor) */ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask("Scanning for entries", 1); httpRepositoryBrowserPlugin = prepareTestPlugin(); try { Queue<Entry> entries = httpRepositoryBrowserPlugin.getEntryList(urlDialogField.getText()); if (entries.size() == 0 || !containFolder(entries)) { status = new StatusInfo(IStatus.WARNING, "There seems to be no available entries in this repository location.\nParsing patterns could be wrong or the url may not point to a Maven 2 repository's root."); } } catch (IOException e) { logger.debug(e); } monitor.done(); } /** * Contain folder. * * @param entries * the entries * * @return true, if successful */ private boolean containFolder(Queue<Entry> entries) { boolean result = false; for (Entry entry : entries) { if (entry.getRawType() == Entry.RawType.DIRECTORY) { result = true; break; } } return result; } /** * Gets the http repository plugin. * * @return the http repository plugin */ public HttpRepositoryBrowserPlugin getHttpRepositoryPlugin() { return httpRepositoryBrowserPlugin; } } /** The Constant CONNECTION_OK. */ private static final int CONNECTION_OK = 1 << 0; /** The Constant RESPONSE_STATE_NOT_200. */ private static final int RESPONSE_STATE_NOT_200 = 1 << 1; /** The Constant CANNOT_REACH_URL. */ private static final int CANNOT_REACH_URL = 1 << 2; /** The Constant URL_NOT_CORRECT. */ private static final int URL_NOT_CORRECT = 1 << 3; /** Logger for this class. */ private static Logger logger = Logger.getLogger(HttpRepositoryInfosWizardPage.class); /** The name dialog field. */ private StringDialogField nameDialogField; /** The url dialog field. */ private StringDialogField urlDialogField; /** The pattern set field. */ private ComboDialogField patternSetField; /** The entry pattern dialog field. */ private StringDialogField entryPatternDialogField; /** The parent pattern dialog field. */ private StringDialogField parentPatternDialogField; /** The directory entry pattern dialog field. */ private StringDialogField directoryEntryPatternDialogField; /** The file entry pattern dialog field. */ private StringDialogField fileEntryPatternDialogField; // // /** The proxy host dialog field. */ // private StringDialogField proxyHostDialogField; // // /** The proxy port dialog field. */ // private StringDialogField proxyPortDialogField; /** The url validated. */ private boolean urlValidated; /** The url last length. */ private int urlLastLength = 0; /** The status. */ private IStatus status; /** The validate button. */ private Button validateButton; /** The list root entries button. */ private Button listRootEntriesButton; private String proxyHost; private Integer proxyPort; private Link preferencesLink; /** * Instantiates a new http repository infos wizard page. */ public HttpRepositoryInfosWizardPage() { super(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_id, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_title, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_description); setColumnsNumber(1); } /** * Instantiates a new http repository infos wizard page. * * @param label * the label * @param repository * the repository */ public HttpRepositoryInfosWizardPage(String label, IHttpCrawledRepositorySetup repository) { this(); this.label = label; this.repositorySetup = repository; } /** * Describe. * * @see org.org.eclipse.core.utils.platform.wizards.page.AbstractWizardCustomPage#describe() */ @Override protected void describe() { final TabFolder tabFolder = new TabFolder(getWizardContainer(), SWT.NONE); tabFolder.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Composite composite = WizardContentsHelper.createClientComposite(tabFolder); GridLayout layout = new GridLayout(1, false); composite.setLayout(layout); Composite repositoryInfoComposite = describeRepositoryInfoSection(composite); repositoryInfoComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); Composite filtersComposite = describeGroupFiltersSection(composite); filtersComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); TabItem item = new TabItem(tabFolder, SWT.NONE); item.setText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_repository_infos); item.setControl(composite); Composite patternsComposite = describePatternsSection(tabFolder); filtersComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); TabItem item3 = new TabItem(tabFolder, SWT.NONE); item3.setText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_parsing_expandItem); item3.setControl(patternsComposite); Composite proxyInfoComposite = describeProxyInfoSection(tabFolder); proxyInfoComposite.setLayoutData(new GridData(GridData.FILL_BOTH)); TabItem item4 = new TabItem(tabFolder, SWT.NONE); item4.setText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_proxy_expandItem); item4.setControl(proxyInfoComposite); validateButton = new Button(getWizardContainer(), SWT.NONE); validateButton.setText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_validate_url_button); validateButton.addMouseListener(new MouseListener() { public void mouseUp(MouseEvent e) { try { validateUrl(); } catch (Exception ex) { ErrorDialog errorDialog = new ErrorDialog(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_error_impossible_validate, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_error_impossible_validate_url, ex); errorDialog.open(); } touch(); } public void mouseDown(MouseEvent e) { } public void mouseDoubleClick(MouseEvent e) { } }); validateButton.addKeyListener(new KeyListener() { public void keyReleased(KeyEvent e) { if (e.getSource().equals(validateButton)) { try { validateUrl(); } catch (Exception ex) { ErrorDialog errorDialog = new ErrorDialog(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_error_impossible_validate, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_error_impossible_validate_url, ex); errorDialog.open(); } touch(); } } public void keyPressed(KeyEvent e) { } }); } /** * Format entries. * * @param entries * the entries * * @return the string */ private String formatEntries(Queue<Entry> entries) { StringBuilder stringBuilder = new StringBuilder(); for (Entry entry : entries) { stringBuilder.append(entry.getRawType().name() + " : " + entry.getResolvedName() + "\n"); } return stringBuilder.toString(); } /** * Describe proxy info section. * * @param parent * the parent * * @return the composite */ private Composite describeProxyInfoSection(Composite parent) { Composite proxyInfoComposite = WizardContentsHelper.createClientComposite(parent); proxyInfoComposite.setLayout(new GridLayout(2, false)); Label label = WizardContentsHelper.createDescriptionLabel(proxyInfoComposite, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_proxy_description); GridData data = new GridData(SWT.FILL, SWT.CENTER, true, false); data.horizontalSpan = 2; label.setLayoutData(data); preferencesLink = new Link(proxyInfoComposite, SWT.NONE); preferencesLink.setFont(getWizardContainer().getFont()); preferencesLink.setText("<A>" + "Configure the proxy through Eclipse preferences" + "</A>"); //$NON-NLS-1$ //$NON-NLS-2$ preferencesLink.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { doLinkActivated((Link) e.widget); } private void doLinkActivated(Link link) { PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(Display.getDefault().getActiveShell(), "org.eclipse.ui.net.NetPreferences", null, null); dialog.open(); } public void widgetDefaultSelected(SelectionEvent e) { doLinkActivated((Link) e.widget); } }); return proxyInfoComposite; } /** * Describe patterns section. * * @param parent * the parent * * @return the composite */ private Composite describePatternsSection(Composite parent) { Composite patternsComposite = WizardContentsHelper.createClientComposite(parent); patternsComposite.setLayout(new GridLayout(2, false)); Label label = WizardContentsHelper.createDescriptionLabel(patternsComposite, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_parsing_description); GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.horizontalSpan = 2; label.setLayoutData(data); patternSetField = new ComboDialogField(SWT.SIMPLE); // patternSetField.setItems(new String[] { HttpRepositoryBrowserPlugin.APACHE2_PATTERNSET.getLabel(), HttpRepositoryBrowserPlugin.TOMCAT6_PATTERNSET.getLabel(), HttpRepositoryBrowserPlugin.ARTIFACTORY_PATTERNSET.getLabel() }); patternSetField.setItems(DWSCorePlugin.getDefault().getPatternSetLabels()); patternSetField.setLabelText("Pattern set:"); patternSetField.setDialogFieldListener(getWizardAdapter()); patternSetField.doFillIntoTable(patternsComposite, 2); entryPatternDialogField = new StringDialogField(); entryPatternDialogField.setLabelText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_entryPattern); entryPatternDialogField.setDialogFieldListener(getWizardAdapter()); entryPatternDialogField.doFillIntoTable(patternsComposite, 2); entryPatternDialogField.setContentProposals(RepositoryModelPersistence.getEntryPatternAutocompleteProposals()); parentPatternDialogField = new StringDialogField(); parentPatternDialogField.setLabelText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_parentPattern); parentPatternDialogField.setDialogFieldListener(getWizardAdapter()); parentPatternDialogField.doFillIntoTable(patternsComposite, 2); parentPatternDialogField.setContentProposals(RepositoryModelPersistence.getParentPatternAutocompleteProposals()); directoryEntryPatternDialogField = new StringDialogField(); directoryEntryPatternDialogField.setLabelText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_directoryEntryPattern); directoryEntryPatternDialogField.setDialogFieldListener(getWizardAdapter()); directoryEntryPatternDialogField.doFillIntoTable(patternsComposite, 2); directoryEntryPatternDialogField.setContentProposals(RepositoryModelPersistence.getDirectoryEntryPatternAutocompleteProposals()); fileEntryPatternDialogField = new StringDialogField(); fileEntryPatternDialogField.setLabelText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_fileEntryPattern); fileEntryPatternDialogField.setDialogFieldListener(getWizardAdapter()); fileEntryPatternDialogField.doFillIntoTable(patternsComposite, 2); fileEntryPatternDialogField.setContentProposals(RepositoryModelPersistence.getFileEntryPatternAutocompleteProposals()); listRootEntriesButton = new Button(patternsComposite, SWT.NONE); listRootEntriesButton.setText("Test retrieval of root entries"); listRootEntriesButton.addMouseListener(new MouseListener() { /** * @see org.eclipse.swt.events.MouseListener#mouseUp(org.eclipse.swt.events.MouseEvent) */ public void mouseUp(MouseEvent e) { if (e.getSource().equals(listRootEntriesButton)) { HttpRepositoryBrowserPlugin httpRepositoryBrowserPlugin = prepareTestPlugin(); try { Queue<Entry> entries = httpRepositoryBrowserPlugin.getEntryList(urlDialogField.getText()); InfoDialog infoDialog = new InfoDialog("Root entries for repository " + nameDialogField.getText(), "Found " + entries.size() + (entries.size() > 1 ? " entries." : " entry.") + "\n Open details in order to see the list.", formatEntries(entries)); infoDialog.open(); } catch (IOException ex) { ErrorDialog errorDialog = new ErrorDialog("Impossible to achieve", "Impossible to retrieve root entries", ex); errorDialog.open(); logger.debug(ex); } } } /** * @see org.eclipse.swt.events.MouseListener#mouseDown(org.eclipse.swt.events.MouseEvent) */ public void mouseDown(MouseEvent e) { } /** * @see org.eclipse.swt.events.MouseListener#mouseDoubleClick(org.eclipse.swt.events.MouseEvent) */ public void mouseDoubleClick(MouseEvent e) { } }); listRootEntriesButton.addKeyListener(new KeyListener() { public void keyReleased(KeyEvent e) { if (e.getSource().equals(listRootEntriesButton)) { HttpRepositoryBrowserPlugin httpRepositoryBrowserPlugin = prepareTestPlugin(); try { Queue<Entry> entries = httpRepositoryBrowserPlugin.getEntryList(urlDialogField.getText()); InfoDialog infoDialog = new InfoDialog("Root entries for repository " + nameDialogField.getText(), "Found " + entries.size() + (entries.size() > 1 ? " entries." : " entry.") + "\n Open details in order to see the list.", formatEntries(entries)); infoDialog.open(); } catch (IOException ex) { logger.debug(ex); } } } public void keyPressed(KeyEvent e) { } }); return patternsComposite; } /** * Describe repository info section. * * @param parent * the parent * * @return the composite */ private Composite describeRepositoryInfoSection(Composite parent) { Composite composite = WizardContentsHelper.createClientComposite(parent); GridLayout layout = new GridLayout(2, false); composite.setLayout(layout); nameDialogField = new StringDialogField(); nameDialogField.setLabelText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_repositoryName); nameDialogField.setDialogFieldListener(getWizardAdapter()); nameDialogField.doFillIntoTable(composite, 2); nameDialogField.setContentProposals(RepositoryModelPersistence.getRepositoryNameAutocompleteProposals()); urlDialogField = new StringDialogField(); urlDialogField.setLabelText(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_repositoryUrl); urlDialogField.setDialogFieldListener(getWizardAdapter()); urlDialogField.doFillIntoTable(composite, 2); urlDialogField.setContentProposals(RepositoryModelPersistence.getHttpBrowsedRepositoryAutocompleteProposals()); return composite; } /** * Initialize. * * @see org.org.eclipse.core.utils.platform.wizards.page.AbstractWizardCustomPage#initialize() */ @Override protected void initialize() { nameDialogField.setFocus(); if (getWizard() instanceof NewRepositoryWizard) { NewRepositoryWizard newRepositoryWizard = (NewRepositoryWizard) getWizard(); IHttpCrawledRepositorySetup chosenSetup = (IHttpCrawledRepositorySetup) newRepositoryWizard.getChosenRepositorySetup(); if (chosenSetup != null) { this.repositorySetup = chosenSetup; this.label = chosenSetup.getId(); } } if (label != null) { nameDialogField.setText(label); } if (repositorySetup != null) { urlDialogField.setText(repositorySetup.getBaseUrl()); if (repositorySetup.getPatternSet() != null) { if (repositorySetup.getPatternSet().getEntryPattern() != null) { entryPatternDialogField.setText(repositorySetup.getPatternSet().getEntryPattern()); } if (repositorySetup.getPatternSet().getParentDirectoryPattern() != null) { parentPatternDialogField.setText(repositorySetup.getPatternSet().getParentDirectoryPattern()); } if (repositorySetup.getPatternSet().getDirectoryEntryPattern() != null) { directoryEntryPatternDialogField.setText(repositorySetup.getPatternSet().getDirectoryEntryPattern()); } if (repositorySetup.getPatternSet().getFileEntryPattern() != null) { fileEntryPatternDialogField.setText(repositorySetup.getPatternSet().getFileEntryPattern()); } } if (repositorySetup.getGroupFilters().size() != 0) { setGroupFilters(new HashSet<String>(repositorySetup.getGroupFilters())); getGroupFiltersDialogField().addElements(new ArrayList<Object>(getGroupFilters())); } } else { getGroupFilters().add(AbstractCrawledRepositorySetup.KEEP_ALL_PATTERN); getGroupFiltersDialogField().addElement(AbstractCrawledRepositorySetup.KEEP_ALL_PATTERN); IPatternSet patternSet = RepositoryModelPersistence.getPatternSets(); patternSetField.selectItem(patternSet.getLabel()); mapPatternSet(patternSet); } } /** * Map pattern set. * * @param patternSet * the pattern set */ private void mapPatternSet(IPatternSet patternSet) { entryPatternDialogField.setText(patternSet.getEntryPattern()); parentPatternDialogField.setText(patternSet.getParentDirectoryPattern()); directoryEntryPatternDialogField.setText(patternSet.getDirectoryEntryPattern()); fileEntryPatternDialogField.setText(patternSet.getFileEntryPattern()); } /** * Touch. * * @see org.org.eclipse.core.utils.platform.wizards.page.AbstractWizardCustomPage#touch() */ @Override protected void touch() { updateStatus(validate()); } /** * Validate url. * * @throws InvocationTargetException * the invocation target exception * @throws InterruptedException * the interrupted exception */ private void validateUrl() throws InvocationTargetException, InterruptedException { this.getContainer().run(true, true, new IRunnableWithProgress() { /** * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor) */ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { monitor.beginTask("Testing URL", 1); int URL_STATUS = testURLConnection(urlDialogField.getText()); if (URL_STATUS != CONNECTION_OK) { StringBuilder detail = new StringBuilder(); switch (URL_STATUS) { case RESPONSE_STATE_NOT_200: detail.append(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_error_invalidurl1); break; case CANNOT_REACH_URL: detail.append(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_error_invalidurl2); break; case URL_NOT_CORRECT: detail.append(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_error_invalidurl3); break; default: detail.append(WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_error_invalidurl4); break; } status = new StatusInfo(IStatus.ERROR, detail.toString()); } else { status = null; } urlValidated = true; } }); ScanForEntriesRunnableWithProgress scanForEntriesRunnableWithProgress = new ScanForEntriesRunnableWithProgress(); this.getContainer().run(false, false, scanForEntriesRunnableWithProgress); Proxy proxy = scanForEntriesRunnableWithProgress.getHttpRepositoryPlugin().getProxy(); if (proxy != null && proxy.type() == Proxy.Type.HTTP && proxy.address() instanceof InetSocketAddress) { InetSocketAddress inetSocketAddress = (InetSocketAddress) proxy.address(); proxyHost = inetSocketAddress.getHostName(); proxyPort = inetSocketAddress.getPort(); } } /** * Validate. * * @return the i status * * @see org.org.eclipse.core.utils.platform.wizards.page.AbstractWizardCustomPage#validate() */ @Override protected IStatus validate() { IStatus status = new StatusInfo(); validateButton.setEnabled(false); if (nameDialogField == null || nameDialogField.getText().trim().equals("")) { //$NON-NLS-1$ status = new StatusInfo(IStatus.ERROR, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_inputName); } else if (urlDialogField == null || urlDialogField.getText().trim().equals("")) { //$NON-NLS-1$ status = new StatusInfo(IStatus.ERROR, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_inputUrl); } else { if (!urlValidated) { status = new StatusInfo(IStatus.ERROR, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_validateurl); validateButton.setEnabled(true); } else if (urlValidated && urlLastLength != urlDialogField.getText().length()) { urlValidated = false; status = new StatusInfo(IStatus.ERROR, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_validateurl); validateButton.setEnabled(true); } else if (urlValidated && this.status != null) { status = this.status; urlValidated = false; } else { status = new StatusInfo(IStatus.INFO, WizardsMessages.HttpBrowsedRepositoryInfosWizardPage_info_startbrowsing); HttpCrawledRepositorySetup httpCrawledRepositorySetup = new HttpCrawledRepositorySetup(urlDialogField.getText()); PatternSet patternSet = new PatternSet(); patternSet.setEntryPattern(entryPatternDialogField.getText()); patternSet.setParentDirectoryPattern(parentPatternDialogField.getText()); patternSet.setDirectoryEntryPattern(directoryEntryPatternDialogField.getText()); patternSet.setFileEntryPattern(fileEntryPatternDialogField.getText()); httpCrawledRepositorySetup.setPatternSet(patternSet.getImmutable()); if (!(proxyHost == null)) { //$NON-NLS-1$ httpCrawledRepositorySetup.setProxyHost(proxyHost); } if (!(proxyPort == null)) { //$NON-NLS-1$ httpCrawledRepositorySetup.setProxyPort(proxyPort); } label = nameDialogField.getText(); repositorySetup = (IHttpCrawledRepositorySetup) httpCrawledRepositorySetup.getImmutable(); } } urlLastLength = urlDialogField.getText().length(); return status; } /** * Test url connection. * * @param testURL * the test url * * @return the int */ private int testURLConnection(String testURL) { int result = -1; try { URL u = new URL(testURL); HttpURLConnection uc = (HttpURLConnection) u.openConnection(IOToolBox.determineProxy(u)); if (uc.getResponseCode() == HttpURLConnection.HTTP_OK) { result = CONNECTION_OK; } else { result = RESPONSE_STATE_NOT_200; } } catch (IllegalArgumentException iae) { logger.debug(iae); result = URL_NOT_CORRECT; } catch (MalformedURLException e) { logger.debug(e); result = URL_NOT_CORRECT; } catch (IOException e) { logger.debug(e); result = CANNOT_REACH_URL; } catch (URISyntaxException e) { logger.debug(e); result = URL_NOT_CORRECT; } return result; } /** * Test url connection. * * @param testURL * the test url * @param proxy * the proxy * * @return the int * @deprecated no more proxy configuration. */ @SuppressWarnings("unused") @Deprecated private int testURLConnection(String testURL, Proxy proxy) { int result = -1; try { URL u = new URL(testURL); HttpURLConnection uc = (HttpURLConnection) u.openConnection(proxy); if (uc.getResponseCode() == HttpURLConnection.HTTP_OK) { result = CONNECTION_OK; } else { result = RESPONSE_STATE_NOT_200; } } catch (IllegalArgumentException iae) { logger.debug(iae); result = URL_NOT_CORRECT; } catch (MalformedURLException e) { logger.debug(e); result = URL_NOT_CORRECT; } catch (IOException e) { logger.debug(e); result = CANNOT_REACH_URL; } return result; } /** * Adds the group filters. * * @param repositorySetup * the repository setup * @param filters * the filters * * @return the i http repository setup * * @see org.org.eclipse.dws.ui.internal.wizards.pages.AbstractRepositoryInfosWizardPage#addGroupFilters(org.org.repository.crawler.items.ICrawledRepositorySetup, java.util.Set) */ @Override protected IHttpCrawledRepositorySetup addGroupFilters(IHttpCrawledRepositorySetup repositorySetup, Set<String> filters) { HttpCrawledRepositorySetup httpCrawledRepositorySetup = new HttpCrawledRepositorySetup(repositorySetup); httpCrawledRepositorySetup.setGroupFilters(filters); return (IHttpCrawledRepositorySetup) httpCrawledRepositorySetup.getImmutable(); } /** * Handle change control pressed. * * @param field * the field * * @see org.org.eclipse.core.utils.platform.wizards.page.AbstractWizardCustomPage#handleChangeControlPressed(org.org.eclipse.core.utils.platform.fields.IDialogField) */ @Override protected void handleChangeControlPressed(IDialogField field) { touch(); } /** * Handle dialog field changed. * * @param field * the field * * @see org.org.eclipse.core.utils.platform.wizards.page.AbstractWizardCustomPage#handleDialogFieldChanged(org.org.eclipse.core.utils.platform.fields.IDialogField) */ @Override protected void handleDialogFieldChanged(IDialogField field) { if (field.equals(patternSetField)) { ComboDialogField comboDialogField = (ComboDialogField) field; if (comboDialogField.getSelectionIndex() >= 0) { String selectedItemLabel = comboDialogField.getItems()[comboDialogField.getSelectionIndex()]; mapPatternSet(DWSCorePlugin.getDefault().getPatternSetWithLabel(selectedItemLabel)); } } touch(); } /** * Handle double clicked. * * @param field * the field * * @see org.org.eclipse.core.utils.platform.wizards.page.AbstractWizardCustomPage#handleDoubleClicked(org.org.eclipse.core.utils.platform.dialogs.selection.IListDialogField) */ @Override protected void handleDoubleClicked(IListDialogField field) { touch(); } /** * Handle selection changed. * * @param field * the field * * @see org.org.eclipse.core.utils.platform.wizards.page.AbstractWizardCustomPage#handleSelectionChanged(org.org.eclipse.core.utils.platform.dialogs.selection.IListDialogField) */ @Override protected void handleSelectionChanged(IListDialogField field) { touch(); } /** * Prepare test plugin. * * @return the http repository browser plugin */ private HttpRepositoryBrowserPlugin prepareTestPlugin() { HttpRepositoryBrowserPlugin httpRepositoryBrowserPlugin = new HttpRepositoryBrowserPlugin(); String url = urlDialogField.getText(); HttpCrawledRepositorySetup httpCrawledRepositorySetup = new HttpCrawledRepositorySetup(url); try { Proxy proxy; try { proxy = IOToolBox.determineProxy(new URL(url)); } catch (URISyntaxException e) { // TODO Auto-generated catch block proxy = Proxy.NO_PROXY; } if (proxy != null && proxy.type() == Proxy.Type.HTTP && proxy.address() instanceof InetSocketAddress) { InetSocketAddress inetSocketAddress = (InetSocketAddress) proxy.address(); httpCrawledRepositorySetup.setProxyHost(inetSocketAddress.getHostName()); httpCrawledRepositorySetup.setProxyPort(inetSocketAddress.getPort()); } } catch (MalformedURLException e) { // do something deeply meaningful here } httpCrawledRepositorySetup.setPatternSet(new ImmutablePatternSet(patternSetField.getText(), entryPatternDialogField.getText(), fileEntryPatternDialogField.getText(), directoryEntryPatternDialogField.getText(), parentPatternDialogField.getText())); httpRepositoryBrowserPlugin.init(httpCrawledRepositorySetup); return httpRepositoryBrowserPlugin; } }