http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/MartServiceXMLHandler.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/MartServiceXMLHandler.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/MartServiceXMLHandler.java new file mode 100644 index 0000000..e8a5189 --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/MartServiceXMLHandler.java @@ -0,0 +1,390 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: MartServiceXMLHandler.java,v $ + * Revision $Revision: 1.4 $ + * Release status $State: Exp $ + * Last modified on $Date: 2007/12/13 11:38:55 $ + * by $Author: davidwithers $ + * Created on 28-Apr-2006 + *****************************************************************/ +package org.biomart.martservice; + +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.biomart.martservice.query.QueryXMLHandler; +import org.jdom.Element; +import org.jdom.Namespace; + +/** + * Utility class for serializing mart service classes to XML. + * + * @author David Withers + */ +public class MartServiceXMLHandler { + public static final String MART_SERVICE_ELEMENT = "MartService"; + + public static final String MART_URL_LOCATION_ELEMENT = "MartURLLocation"; + + public static final String MART_DATASET_ELEMENT = "MartDataset"; + + public static final String MART_QUERY_ELEMENT = "MartQuery"; + + public static final String LINKED_DATASETS_ELEMENT = "LinkedDatasets"; + + public static final String LINKED_DATASET_ELEMENT = "LinkedDataset"; + + public static final String VIRTUAL_SCHEMA_ELEMENT = "virtualSchema"; + + public static final String LOCATION_ATTRIBUTE = "location"; + + public static final String DATABASE_ATTRIBUTE = "database"; + + public static final String DEFAULT_ATTRIBUTE = "default"; + + public static final String DEFAULT_VALUE_ATTRIBUTE = "defaultValue"; + + public static final String DISPLAY_NAME_ATTRIBUTE = "displayName"; + + public static final String HOST_ATTRIBUTE = "host"; + + public static final String INCLUDE_DATASETS_ATTRIBUTE = "includeDatasets"; + + public static final String LINK_ATTRIBUTE = "LINK"; + + public static final String MART_USER_ATTRIBUTE = "martUser"; + + public static final String NAME_ATTRIBUTE = "name"; + + public static final String PATH_ATTRIBUTE = "path"; + + public static final String PORT_ATTRIBUTE = "port"; + + public static final String TYPE_ATTRIBUTE = "type"; + + public static final String INITIAL_BATCH_SIZE_ATTRIBUTE = "initialBatchSize"; + + public static final String MAXIMUM_BATCH_SIZE_ATTRIBUTE = "maximumBatchSize"; + + public static final String VIRTUAL_SCHEMA_ATTRIBUTE = "virtualSchema"; + + public static final String SERVER_VIRTUAL_SCHEMA_ATTRIBUTE = "serverVirtualSchema"; + + public static final String VISIBLE_ATTRIBUTE = "visible"; + + public static final String REDIRECT_ATTRIBUTE = "redirect"; + + public static final String INTERFACE_ATTRIBUTE = "interface"; + + public static final String MODIFIED_ATTRIBUTE = "modified"; + + /** + * Converts a <code>MartService</code> to an XML element. + * + * @param martService + * the <code>MartService</code> to serialize + * @param namespace + * the <code>Namespace</code> to use when constructing the + * <code>Element</code> + * @return an XML serialization of the <code>MartService</code> + */ + public static Element martServiceToElement(MartService martService, + Namespace namespace) { + Element element = new Element(MART_SERVICE_ELEMENT, namespace); + element.setAttribute(LOCATION_ATTRIBUTE, martService.getLocation()); + return element; + } + + /** + * Creates a <code>MartService</code> from an XML element. + * + * @param element + * the <code>Element</code> to deserialize + * @return a deserialized <code>MartService</code> + */ + public static MartService elementToMartService(Element element) { + return MartService.getMartService(element + .getAttributeValue(LOCATION_ATTRIBUTE)); + } + + /** + * Converts a <code>MartDataset</code> to an XML element. + * + * @param dataset + * the <code>MartDataset</code> to serialize + * @param namespace + * the <code>Namespace</code> to use when constructing the + * <code>Element</code> + * @return an XML serialization of the <code>MartDataset</code> + */ + public static Element datasetToElement(MartDataset dataset, + Namespace namespace) { + Element element = new Element(MART_DATASET_ELEMENT, namespace); + element.setAttribute(DISPLAY_NAME_ATTRIBUTE, dataset.getDisplayName()); + element.setAttribute(NAME_ATTRIBUTE, dataset.getName()); + element.setAttribute(TYPE_ATTRIBUTE, dataset.getType()); + element.setAttribute(INITIAL_BATCH_SIZE_ATTRIBUTE, String + .valueOf(dataset.getInitialBatchSize())); + element.setAttribute(MAXIMUM_BATCH_SIZE_ATTRIBUTE, String + .valueOf(dataset.getMaximumBatchSize())); + element.setAttribute(VISIBLE_ATTRIBUTE, String.valueOf(dataset + .isVisible())); + if (dataset.getInterface() != null) { + element.setAttribute(INTERFACE_ATTRIBUTE, dataset.getInterface()); + } + if (dataset.getModified() != null) { + element.setAttribute(MODIFIED_ATTRIBUTE, dataset.getModified()); + } + element.addContent(locationToElement(dataset.getMartURLLocation(), + namespace)); + return element; + } + + /** + * Creates a <code>MartDataset</code> from an XML element. + * + * @param element + * the <code>Element</code> to deserialize + * @param namespace + * the <code>Namespace</code> containing the + * <code>Element</code> + * @return a deserialized <code>MartDataset</code> + */ + public static MartDataset elementToDataset(Element element, + Namespace namespace) { + MartDataset dataset = new MartDataset(); + dataset.setDisplayName(element + .getAttributeValue(DISPLAY_NAME_ATTRIBUTE)); + dataset.setName(element.getAttributeValue(NAME_ATTRIBUTE)); + dataset.setType(element.getAttributeValue(TYPE_ATTRIBUTE)); + dataset.setInitialBatchSize(Long.parseLong(element + .getAttributeValue(INITIAL_BATCH_SIZE_ATTRIBUTE))); + dataset.setMaximumBatchSize(Long.parseLong(element + .getAttributeValue(MAXIMUM_BATCH_SIZE_ATTRIBUTE))); + dataset.setVisible(Boolean.getBoolean(element + .getAttributeValue(VISIBLE_ATTRIBUTE))); + dataset.setInterface(element.getAttributeValue(INTERFACE_ATTRIBUTE)); + dataset.setModified(element.getAttributeValue(MODIFIED_ATTRIBUTE)); + dataset.setMartURLLocation(elementToLocation(element.getChild( + MART_URL_LOCATION_ELEMENT, namespace))); + return dataset; + } + + /** + * Creates a <code>MartRegistry</code> from an XML element. + * + * @param element + * the <code>Element</code> to deserialize + * @param namespace + * the <code>Namespace</code> containing the + * <code>Element</code> + * @return a deserialized <code>MartRegistry</code> + */ + public static MartRegistry elementToRegistry(Element root, + Namespace namespace) { + MartRegistry registry = new MartRegistry(); + List<Element> children = root.getChildren(); + for (Element childElement : children) { + if (childElement.getNamespace().equals(namespace)) { + if (childElement.getName().equals(MART_URL_LOCATION_ELEMENT)) { + MartURLLocation martURLLocation = MartServiceXMLHandler + .elementToLocation(childElement); + martURLLocation.setVirtualSchema("default"); + registry.addMartURLLocation(martURLLocation); + } else if (childElement.getName() + .equals(VIRTUAL_SCHEMA_ELEMENT)) { + String virtualSchema = childElement + .getAttributeValue(NAME_ATTRIBUTE); + List<Element> locations = childElement.getChildren( + MART_URL_LOCATION_ELEMENT, namespace); + for (Element location : locations) { + MartURLLocation martURLLocation = MartServiceXMLHandler + .elementToLocation(location); + martURLLocation.setVirtualSchema(virtualSchema); + registry.addMartURLLocation(martURLLocation); + } + } + } + } + return registry; + } + + /** + * Converts a <code>MartURLLocation</code> to an XML element. + * + * @param location + * the <code>MartURLLocation</code> to serialize + * @param namespace + * the <code>Namespace</code> to use when constructing the + * <code>Element</code> + * @return an XML serialization of the <code>MartURLLocation</code> + */ + public static Element locationToElement(MartURLLocation location, + Namespace namespace) { + Element element = new Element(MART_URL_LOCATION_ELEMENT, namespace); + if (location.getDatabase() != null) { + element.setAttribute(DATABASE_ATTRIBUTE, location.getDatabase()); + } + element.setAttribute(DEFAULT_ATTRIBUTE, location.isDefault() ? "1" + : "0"); + element.setAttribute(DISPLAY_NAME_ATTRIBUTE, location.getDisplayName()); + element.setAttribute(HOST_ATTRIBUTE, location.getHost()); + if (location.getIncludeDatasets() != null) { + element.setAttribute(INCLUDE_DATASETS_ATTRIBUTE, location + .getIncludeDatasets()); + } + if (location.getMartUser() != null) { + element.setAttribute(MART_USER_ATTRIBUTE, location.getMartUser()); + } + element.setAttribute(NAME_ATTRIBUTE, location.getName()); + if (location.getPath() != null) { + element.setAttribute(PATH_ATTRIBUTE, location.getPath()); + } + element + .setAttribute(PORT_ATTRIBUTE, String + .valueOf(location.getPort())); + element.setAttribute(SERVER_VIRTUAL_SCHEMA_ATTRIBUTE, location + .getServerVirtualSchema()); + if (location.getVirtualSchema() != null) { + element.setAttribute(VIRTUAL_SCHEMA_ATTRIBUTE, location + .getVirtualSchema()); + } + element.setAttribute(VISIBLE_ATTRIBUTE, location.isVisible() ? "1" + : "0"); + element.setAttribute(REDIRECT_ATTRIBUTE, location.isRedirect() ? "1" + : "0"); + return element; + } + + /** + * Creates a <code>MartURLLocation</code> from an XML element. + * + * @param element + * the <code>Element</code> to deserialize + * @return a deserialized <code>MartURLLocation</code> + */ + public static MartURLLocation elementToLocation(Element element) { + MartURLLocation location = new MartURLLocation(); + location.setDatabase(element.getAttributeValue(DATABASE_ATTRIBUTE)); + location.setDefault("1".equals(element + .getAttributeValue(DEFAULT_ATTRIBUTE))); + location.setDisplayName(element + .getAttributeValue(DISPLAY_NAME_ATTRIBUTE)); + location.setHost(element.getAttributeValue(HOST_ATTRIBUTE)); + location.setIncludeDatasets(element + .getAttributeValue(INCLUDE_DATASETS_ATTRIBUTE)); + location.setMartUser(element.getAttributeValue(MART_USER_ATTRIBUTE)); + location.setName(element.getAttributeValue(NAME_ATTRIBUTE)); + location.setPath(element.getAttributeValue(PATH_ATTRIBUTE)); + try { + location.setPort(Integer.parseInt(element + .getAttributeValue(PORT_ATTRIBUTE))); + } catch (NumberFormatException e) { + location.setPort(80); + } + location.setServerVirtualSchema(element + .getAttributeValue(SERVER_VIRTUAL_SCHEMA_ATTRIBUTE)); + location.setVirtualSchema(element + .getAttributeValue(VIRTUAL_SCHEMA_ATTRIBUTE)); + location.setVisible("1".equals(element + .getAttributeValue(VISIBLE_ATTRIBUTE))); + location.setRedirect("1".equals(element + .getAttributeValue(REDIRECT_ATTRIBUTE))); + return location; + } + + /** + * Creates a <code>MartQuery</code> from an XML element. + * + * @param element + * the <code>Element</code> to deserialize + * @param namespace + * the <code>Namespace</code> containing the + * <code>Element</code> + * @return a deserialized <code>MartQuery</code> + */ + public static MartQuery elementToMartQuery(Element element, + Namespace namespace) { + MartQuery martQuery = new MartQuery(); + martQuery.setMartService(MartServiceXMLHandler + .elementToMartService(element.getChild(MART_SERVICE_ELEMENT, + namespace))); + martQuery.setMartDataset(elementToDataset(element.getChild( + MART_DATASET_ELEMENT, namespace), namespace)); + martQuery.setQuery(QueryXMLHandler.elementToQuery(element.getChild( + QueryXMLHandler.QUERY_ELEMENT, namespace), namespace)); + Element linksElement = element.getChild(LINKED_DATASETS_ELEMENT, namespace); + if (linksElement != null) { + List linkedDatasets = linksElement.getChildren(LINKED_DATASETS_ELEMENT, + namespace); + for (Iterator iter = linkedDatasets.iterator(); iter.hasNext();) { + Element datasetElement = (Element) iter.next(); + String datasetName = datasetElement.getAttributeValue(NAME_ATTRIBUTE); + String linkId = datasetElement.getAttributeValue(LINK_ATTRIBUTE); + martQuery.addLinkedDataset(datasetName, linkId); + } + } + return martQuery; + } + + /** + * Converts a <code>MartQuery</code> to an XML element. + * + * @param martQuery + * the <code>MartQuery</code> to serialize + * @param namespace + * the <code>Namespace</code> to use when constructing the + * <code>Element</code> + * @return an XML serialization of the <code>MartQuery</code> + */ + public static Element martQueryToElement(MartQuery martQuery, + Namespace namespace) { + Element element = new Element(MART_QUERY_ELEMENT, namespace); + element.addContent(martServiceToElement(martQuery.getMartService(), + namespace)); + element.addContent(datasetToElement(martQuery.getMartDataset(), + namespace)); + element.addContent(QueryXMLHandler.queryToElement(martQuery.getQuery(), + namespace)); + Set linkedDatasets = martQuery.getLinkedDatasets(); + if (linkedDatasets.size() > 0) { + Element linksElement = new Element(LINKED_DATASETS_ELEMENT, namespace); + for (Iterator iter = linkedDatasets.iterator(); iter.hasNext();) { + String datasetName = (String) iter.next(); + Element datasetElement = new Element(LINKED_DATASETS_ELEMENT, namespace); + datasetElement.setAttribute(NAME_ATTRIBUTE, datasetName); + datasetElement.setAttribute(LINK_ATTRIBUTE, martQuery + .getLink(datasetName)); + linksElement.addContent(datasetElement); + } + element.addContent(linksElement); + } + return element; + } + +}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/MartURLLocation.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/MartURLLocation.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/MartURLLocation.java new file mode 100644 index 0000000..476956d --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/MartURLLocation.java @@ -0,0 +1,422 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: MartURLLocation.java,v $ + * Revision $Revision: 1.2 $ + * Release status $State: Exp $ + * Last modified on $Date: 2007/10/04 14:15:59 $ + * by $Author: davidwithers $ + * Created on 17-Mar-2006 + *****************************************************************/ +package org.biomart.martservice; + +import org.ensembl.mart.lib.config.MartLocation; + +/** + * The MartURLLocation contained by the MartRegistry returned by a BioMart web + * service. + * + * @author David Withers + */ +public class MartURLLocation implements MartLocation { + private static final String URL_TYPE = "URL"; + + private String database; + + private boolean defaultValue; + + private String displayName; + + private String host; + + private String includeDatasets; + + private String martUser; + + private String name; + + private String path; + + private int port; + + private String serverVirtualSchema; + + private String virtualSchema; + + private boolean visible; + + private boolean redirect; + + /** + * Returns the database. + * + * @return the database + */ + public String getDatabase() { + return database; + } + + /** + * Sets the database. + * + * @param database the new database + */ + public void setDatabase(String database) { + this.database = database; + } + + /** + * Returns true if the default flag is set. + * + * @return true if the default flag is set + */ + public boolean isDefault() { + return defaultValue; + } + + /** + * Sets the default flag. + * + * @param defaultValue + * the value of the default flag + */ + public void setDefault(boolean defaultValue) { + this.defaultValue = defaultValue; + } + + /** + * Returns the displayName. + * + * @return the displayName. + */ + public String getDisplayName() { + return displayName; + } + + /** + * Sets the displayName. + * + * @param displayName + * the displayName to set. + */ + public void setDisplayName(String displayName) { + this.displayName = displayName; + } + + /** + * Returns the host. + * + * @return the host. + */ + public String getHost() { + return host; + } + + /** + * Sets the host. + * + * @param host + * the host to set. + */ + public void setHost(String host) { + this.host = host; + } + + /** + * Returns the includeDatasets. + * + * @return the includeDatasets + */ + public String getIncludeDatasets() { + return includeDatasets; + } + + /** + * Sets the includeDatasets. + * + * @param includeDatasets the new includeDatasets + */ + public void setIncludeDatasets(String includeDatasets) { + this.includeDatasets = includeDatasets; + } + + /** + * Returns the martUser. + * + * @return the martUser + */ + public String getMartUser() { + return martUser; + } + + /** + * Sets the martUser. + * + * @param martUser the new martUser + */ + public void setMartUser(String martUser) { + this.martUser = martUser; + } + + /** + * Returns the name + * + * @return the name. + */ + public String getName() { + return name; + } + + /** + * Sets the name. + * + * @param name + * the name to set. + */ + public void setName(String name) { + this.name = name; + } + + /** + * Returns the path. + * + * @return the path + */ + public String getPath() { + return path; + } + + /** + * Sets the path. + * + * @param path the new path + */ + public void setPath(String path) { + this.path = path; + } + + /** + * Returns the port. + * + * @return the port. + */ + public int getPort() { + return port; + } + + /** + * Sets the port. + * + * @param port + * the port to set. + */ + public void setPort(int port) { + this.port = port; + } + + /** + * Returns the serverVirtualSchema. + * + * @return the serverVirtualSchema. + */ + public String getServerVirtualSchema() { + return serverVirtualSchema; + } + + /** + * Sets the serverVirtualSchema. + * + * @param serverVirtualSchema + * the serverVirtualSchema to set. + */ + public void setServerVirtualSchema(String serverVirtualSchema) { + this.serverVirtualSchema = serverVirtualSchema; + } + + /** + * Returns the virtualSchema. + * + * @return the virtualSchema. + */ + public String getVirtualSchema() { + return virtualSchema; + } + + /** + * Sets the virtualSchema. + * + * @param virtualSchema + * the virtualSchema to set. + */ + public void setVirtualSchema(String virtualSchema) { + this.virtualSchema = virtualSchema; + } + + /** + * Returns true if the location is visible. + * + * @return Returns the visible. + */ + public boolean isVisible() { + return visible; + } + + /** + * @param visible + * The visible to set. + */ + public void setVisible(boolean visible) { + this.visible = visible; + } + + /** + * Returns true if this location is redirected. + * + * @return the redirect + */ + public boolean isRedirect() { + return redirect; + } + + /** + * @param redirect the redirect to set + */ + public void setRedirect(boolean redirect) { + this.redirect = redirect; + } + + /* + * (non-Javadoc) + * + * @see org.ensembl.mart.lib.config.MartLocation#getType() + */ + public String getType() { + return URL_TYPE; + } + + /** + * Returns the display name. + * + * @return the display name + */ + public String toString() { + return getDisplayName(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + + ((database == null) ? 0 : database.hashCode()); + result = prime * result + (defaultValue ? 1231 : 1237); + result = prime * result + + ((displayName == null) ? 0 : displayName.hashCode()); + result = prime * result + ((host == null) ? 0 : host.hashCode()); + result = prime * result + + ((includeDatasets == null) ? 0 : includeDatasets.hashCode()); + result = prime * result + + ((martUser == null) ? 0 : martUser.hashCode()); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((path == null) ? 0 : path.hashCode()); + result = prime * result + port; + result = prime * result + (redirect ? 1231 : 1237); + result = prime + * result + + ((serverVirtualSchema == null) ? 0 : serverVirtualSchema + .hashCode()); + result = prime * result + + ((virtualSchema == null) ? 0 : virtualSchema.hashCode()); + result = prime * result + (visible ? 1231 : 1237); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final MartURLLocation other = (MartURLLocation) obj; + if (database == null) { + if (other.database != null) + return false; + } else if (!database.equals(other.database)) + return false; + if (defaultValue != other.defaultValue) + return false; + if (displayName == null) { + if (other.displayName != null) + return false; + } else if (!displayName.equals(other.displayName)) + return false; + if (host == null) { + if (other.host != null) + return false; + } else if (!host.equals(other.host)) + return false; + if (includeDatasets == null) { + if (other.includeDatasets != null) + return false; + } else if (!includeDatasets.equals(other.includeDatasets)) + return false; + if (martUser == null) { + if (other.martUser != null) + return false; + } else if (!martUser.equals(other.martUser)) + return false; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + if (path == null) { + if (other.path != null) + return false; + } else if (!path.equals(other.path)) + return false; + if (port != other.port) + return false; + if (redirect != other.redirect) + return false; + if (serverVirtualSchema == null) { + if (other.serverVirtualSchema != null) + return false; + } else if (!serverVirtualSchema.equals(other.serverVirtualSchema)) + return false; + if (virtualSchema == null) { + if (other.virtualSchema != null) + return false; + } else if (!virtualSchema.equals(other.virtualSchema)) + return false; + if (visible != other.visible) + return false; + return true; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/ResultReceiver.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/ResultReceiver.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/ResultReceiver.java new file mode 100644 index 0000000..cc1d062 --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/ResultReceiver.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: ResultReceiver.java,v $ + * Revision $Revision: 1.2 $ + * Release status $State: Exp $ + * Last modified on $Date: 2008/07/31 15:06:49 $ + * by $Author: davidwithers $ + * Created on Jan 18, 2008 + *****************************************************************/ +package org.biomart.martservice; + +/** + * An interface for receiving results of a Query. + * + * @author David Withers + */ +public interface ResultReceiver { + + /** + * Receives a single row from the results of executing a Query. + * + * This method will be called frequently and should not block. + * + * @param resultRow + */ + public void receiveResult(Object[] resultRow, long index) throws ResultReceiverException; + + /** + * Receives an error for a single row from the results of executing a Query. + * + * This method will be called frequently and should not block. + * + * @param resultRow + */ + public void receiveError(String errorMessage, long index) throws ResultReceiverException; + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/ResultReceiverException.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/ResultReceiverException.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/ResultReceiverException.java new file mode 100644 index 0000000..c3498e6 --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/ResultReceiverException.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: ResultReceiverException.java,v $ + * Revision $Revision: 1.1 $ + * Release status $State: Exp $ + * Last modified on $Date: 2008/03/04 16:47:57 $ + * by $Author: davidwithers $ + * Created on 05-May-2006 + *****************************************************************/ +package org.biomart.martservice; + +/** + * + * @author David Withers + */ +public class ResultReceiverException extends Exception { + private static final long serialVersionUID = 7151337259555845771L; + + /** + * Constructs a new exception with no detail message. + * + */ + public ResultReceiverException() { + super(); + } + + /** + * Constructs a new exception with the specified detail message. + * + * @param message + * the detail message + * @param cause + * the cause (a null value is permitted, and indicates that the + * cause is nonexistent or unknown) + */ + public ResultReceiverException(String message, Throwable cause) { + super(message, cause); + } + + /** + * Constructs a new exception with the specified detail message and cause. + * + * @param message + * the detail message + */ + public ResultReceiverException(String message) { + super(message); + } + + /** + * Constructs a new exception with the specified cause. + * + * @param cause + * the cause (a null value is permitted, and indicates that the + * cause is nonexistent or unknown) + */ + public ResultReceiverException(Throwable cause) { + super(cause); + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/QueryConfigController.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/QueryConfigController.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/QueryConfigController.java new file mode 100644 index 0000000..450b2ba --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/QueryConfigController.java @@ -0,0 +1,388 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: QueryConfigController.java,v $ + * Revision $Revision: 1.4 $ + * Release status $State: Exp $ + * Last modified on $Date: 2007/12/13 11:38:57 $ + * by $Author: davidwithers $ + * Created on 27-Mar-2006 + *****************************************************************/ +package org.biomart.martservice.config; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +import org.apache.log4j.Logger; +import org.biomart.martservice.MartQuery; +import org.biomart.martservice.config.event.QueryComponentEvent; +import org.biomart.martservice.config.event.QueryComponentListener; +import org.biomart.martservice.config.ui.QueryComponent; +import org.biomart.martservice.query.Attribute; +import org.biomart.martservice.query.Dataset; +import org.biomart.martservice.query.Filter; +import org.biomart.martservice.query.Query; +import org.biomart.martservice.query.QueryListener; +import org.ensembl.mart.lib.config.FilterDescription; + +/** + * Controls the interaction between graphical <code>QueryComponent</code>s + * and <code>Query</code>s. + * + * @author David Withers + */ +public class QueryConfigController { + private static Logger logger = Logger + .getLogger("org.biomart.martservice.config"); + + private static QueryListener queryListener = new QueryHandler(); + + private MartQuery martQuery; + + private Query query; + + private Map<String, Attribute> initialAttributeMap = new HashMap<String, Attribute>(); + + private Map<String, Filter> initialFilterMap = new HashMap<String, Filter>(); + + private Map<String, Attribute> nameToAttributeMap = new HashMap<String, Attribute>(); + + private Map <String, Filter> nameToFilterMap = new HashMap<String, Filter>(); + + private QueryComponentHandler queryComponenHandler = new QueryComponentHandler(); + + /** + * Constructs an instance of a <code>QueryConfigController</code>. + * + * @param martQuery + */ + public QueryConfigController(MartQuery martQuery) { + this.martQuery = martQuery; + query = martQuery.getQuery(); + query.addQueryListener(queryListener); + + for (Attribute attribute : query.getAttributes()) { + initialAttributeMap.put(attribute.getQualifiedName(), attribute); + nameToAttributeMap.put(attribute.getQualifiedName(), attribute); + } + for (Filter filter : query.getFilters()) { + initialFilterMap.put(filter.getQualifiedName(), filter); + nameToFilterMap.put(filter.getQualifiedName(), filter); + } + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#finalize() + */ + protected void finalize() throws Throwable { + super.finalize(); + query.removeQueryListener(queryListener); + } + + /** + * Returns the <code>MartQuery</code> under control. + * + * @return the <code>MartQuery</code> under control + */ + public MartQuery getMartQuery() { + return martQuery; + } + + /** + * Removes a <code>QueryComponent</code> from the controller. + * + * @param queryComponent + * the <code>QueryComponent</code> to remove + */ + public void deregister(QueryComponent queryComponent) { + queryComponent.removeQueryComponentListener(queryComponenHandler); + } + + /** + * Registers a <code>QueryComponent</code> with the controller. + * + * If the <code>Query</code> already contains an <code>Attribute</code> + * or <code>Filter</code> with the corresponding name the + * <code>QueryComponent</code> is set as selected. + * + * @param queryComponent + * the <code>QueryComponent</code> to register + */ + public void register(QueryComponent queryComponent) { + if (queryComponent.getType() == QueryComponent.ATTRIBUTE) { + getAttribute(queryComponent); + + // if query already contains attribute then set the component as + // selected + if (initialAttributeMap.containsKey(queryComponent + .getQualifiedName())) { + queryComponent.setSelected(true); + } + + } else if (queryComponent.getType() == QueryComponent.FILTER) { + Filter filter = getFilter(queryComponent); + + String value = filter.getValue(); + if (value != null) { + if (filter.isBoolean()) { + if ("excluded".equals(value)) { + queryComponent.setValue("excluded"); + } else { + queryComponent.setValue("only"); + } + } else { + queryComponent.setValue(value); + } + } + + if (initialFilterMap.containsKey(queryComponent.getQualifiedName())) { + queryComponent.setSelected(true); + } + } else if (queryComponent.getType() == QueryComponent.LINK) { + Iterator<String> linkedDatasets = martQuery.getLinkedDatasets().iterator(); + // only one linked dataset allowed for now + if (linkedDatasets.hasNext()) { + String dataset = linkedDatasets.next(); + queryComponent.setName(dataset); + queryComponent.setValue(martQuery.getLink(dataset)); + } + } + + queryComponent.addQueryComponentListener(queryComponenHandler); + + } + + /** + * Returns the <code>Attribute</code> mapped to the + * <code>QueryComponent</code>. If no <code>Attribute</code> is mapped + * a new <code>Attribute</code> is created and added to the map. + * + * @param queryComponent + * @return + */ + private Attribute getAttribute(QueryComponent queryComponent) { + String internalName = queryComponent.getQualifiedName(); + Attribute attribute = null; + if (nameToAttributeMap.containsKey(internalName)) { + attribute = (Attribute) nameToAttributeMap.get(internalName); + } else { + attribute = new Attribute(queryComponent.getName()); + if (queryComponent.getValue() != null) { + attribute.setAttributes(queryComponent.getValue()); + } + nameToAttributeMap.put(internalName, attribute); + } + return attribute; + } + + /** + * Returns the <code>Filter</code> mapped to the + * <code>QueryComponent</code>. If no <code>Filter</code> is mapped a + * new <code>Filter</code> is created and added to the map. + * + * @param queryComponent + * @return + */ + private Filter getFilter(QueryComponent queryComponent) { + FilterDescription filterDescription = (FilterDescription) queryComponent + .getConfigObject(); + String internalName = queryComponent.getQualifiedName(); + Filter filter; + if (nameToFilterMap.containsKey(internalName)) { + filter = (Filter) nameToFilterMap.get(internalName); + } else { + if ("boolean".equals(filterDescription.getType())) { + if ("excluded".equals(queryComponent.getValue())) { + filter = new Filter(queryComponent.getName(), "excluded", true); + } else { + filter = new Filter(queryComponent.getName(), "only", true); + } + } else { + String defaultValue = filterDescription.getDefaultValue(); + if (defaultValue == null + && !QueryConfigUtils.isNestedList(filterDescription)) { + // if there is no default value but there are options then + // choose the first option as the filter value +// Option[] options = filterDescription.getOptions(); +// if (options != null && options.length > 0) { +// defaultValue = options[0].getValue(); +// } else { + defaultValue = queryComponent.getValue(); +// } + } + filter = new Filter(queryComponent.getName(), defaultValue); + if ("id_list".equals(filterDescription.getType())) { + filter.setList(true); + } + } + nameToFilterMap.put(internalName, filter); + } + return filter; + } + + class QueryComponentHandler implements QueryComponentListener { + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#attributeAdded(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void attributeAdded(QueryComponentEvent event) { + Attribute attribute = (Attribute) nameToAttributeMap.get(event + .getDataset().getName() + + "." + event.getName()); + synchronized (query) { + martQuery.addAttribute(event.getDataset().getName(), attribute); + } + } + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#attributeRemoved(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void attributeRemoved(QueryComponentEvent event) { + Attribute attribute = (Attribute) nameToAttributeMap.get(event + .getDataset().getName() + + "." + event.getName()); + synchronized (query) { + martQuery.removeAttribute(attribute); + } + } + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#filterAdded(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void filterAdded(QueryComponentEvent event) { + Filter filter = (Filter) nameToFilterMap.get(event.getDataset() + .getName() + + "." + event.getName()); + synchronized (query) { + martQuery.addFilter(event.getDataset().getName(), filter); + } + } + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#filterRemoved(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void filterRemoved(QueryComponentEvent event) { + Filter filter = (Filter) nameToFilterMap.get(event.getDataset() + .getName() + + "." + event.getName()); + synchronized (query) { + martQuery.removeFilter(filter); + } + } + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#filterChanged(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void filterChanged(QueryComponentEvent event) { + Filter filter = (Filter) nameToFilterMap.get(event.getDataset() + .getName() + + "." + event.getName()); + synchronized (query) { + filter.setValue(event.getValue()); + } + } + + /* + * (non-Javadoc) + * + * @see org.biomart.martservice.config.event.QueryComponentListener#linkAdded(org.biomart.martservice.config.event.QueryComponentEvent) + */ + public void linkAdded(QueryComponentEvent event) { + martQuery.addLinkedDataset(event.getName(), event.getValue()); + } + + /* + * (non-Javadoc) + * + * @see org.biomart.martservice.config.event.QueryComponentListener#linkRemoved(org.biomart.martservice.config.event.QueryComponentEvent) + */ + public void linkRemoved(QueryComponentEvent event) { + martQuery.removeLinkedDataset(event.getName()); + } + + /* + * (non-Javadoc) + * + * @see org.biomart.martservice.config.QueryComponentListener#linkChanged(org.biomart.martservice.config.QueryComponentEvent) + */ + public void linkChanged(QueryComponentEvent event) { + martQuery.changeLinkedDataset(event.getName(), event.getValue()); + } + + } + + static class QueryHandler implements QueryListener { + + public void attributeAdded(Attribute attribute, Dataset dataset) { + logger.info("Attribute Added " + attribute.getQualifiedName()); + } + + public void attributeRemoved(Attribute attribute, Dataset dataset) { + logger.info("Attribute Removed " + attribute.getQualifiedName()); + } + + public void filterAdded(Filter filter, Dataset dataset) { + logger.info("Filter Added " + filter.getQualifiedName() + " " + + filter.getValue()); + } + + public void filterRemoved(Filter filter, Dataset dataset) { + logger.info("Filter Removed " + filter.getQualifiedName()); + } + + public void filterChanged(Filter filter, Dataset dataset) { + logger.info("Filter Changed " + filter.getQualifiedName() + " " + + filter.getValue()); + } + + public void formatterAdded(String formatter) { + logger.info("Formatter Added " + formatter); + } + + public void formatterRemoved(String formatter) { + logger.info("Formatter Removed " + formatter); + } + + public void formatterChanged(String formatter) { + logger.info("Formatter Changed to " + formatter); + } + + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/QueryConfigUtils.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/QueryConfigUtils.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/QueryConfigUtils.java new file mode 100644 index 0000000..2bc7d71 --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/QueryConfigUtils.java @@ -0,0 +1,598 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: QueryConfigUtils.java,v $ + * Revision $Revision: 1.3 $ + * Release status $State: Exp $ + * Last modified on $Date: 2007/12/13 11:38:57 $ + * by $Author: davidwithers $ + * Created on 30-Mar-2006 + *****************************************************************/ +package org.biomart.martservice.config; + +import java.awt.Component; +import java.awt.Font; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.border.EtchedBorder; + +import org.biomart.martservice.MartDataset; +import org.biomart.martservice.MartService; +import org.biomart.martservice.MartServiceException; +import org.biomart.martservice.config.ui.QueryComponent; +import org.ensembl.mart.lib.config.AttributeDescription; +import org.ensembl.mart.lib.config.AttributePage; +import org.ensembl.mart.lib.config.BaseNamedConfigurationObject; +import org.ensembl.mart.lib.config.DatasetConfig; +import org.ensembl.mart.lib.config.FilterDescription; +import org.ensembl.mart.lib.config.Option; + +/** + * Utility class for configuration objects. + * + * @author David Withers + */ +public abstract class QueryConfigUtils { + public static final String LINE_END = System.getProperty("line.separator"); + + private static int DISPLAY_WIDTH = 35; + + public static String splitSentence(String sentence) { + return splitSentence(sentence, DISPLAY_WIDTH); + } + + public static String splitSentence(String sentence, int limit) { + StringBuffer sb = new StringBuffer(); + sb.append("<html>"); + + int width = 0; + String[] split = sentence.split(" "); + for (int i = 0; i < split.length; i++) { + if (width == 0) { + sb.append(split[i]); + width += split[i].length(); + } else if (width + split[i].length() + 1 > limit) { + sb.append("<br>"); + sb.append(split[i]); + width = split[i].length(); + } else { + sb.append(" "); + sb.append(split[i]); + width += split[i].length() + 1; + } + } + + return sb.toString(); + } + + /** + * Returns name truncated to DISPLAY_WIDTH. + * + * @param name + * @return + */ + public static String truncateName(String name) { + if (name.length() > DISPLAY_WIDTH) { + return name.substring(0, DISPLAY_WIDTH); + } else { + return name; + } + } + + public static List<String> getOutputFormats(AttributePage attributePage) { + List<String> outputFormats = new ArrayList<String>(); + + String[] formats = attributePage.getOutFormats().split(","); + for (int i = 0; i < formats.length; i++) { + outputFormats.add(formats[i]); + } + return outputFormats; + } + + /** + * Returns true if filterDescription has no options. + * + * @param filterDescription + * @return true if filterDescription has no options + */ + public static boolean isList(FilterDescription filterDescription) { + return filterDescription.getOptions().length > 0; + } + + /** + * Returns true if filterDescription has options and at least one option + * also has options. + * + * @param filterDescription + * @return true if filterDescription has options and at least one option + * also has options + */ + public static boolean isNestedList(FilterDescription filterDescription) { + Option[] options = filterDescription.getOptions(); + for (int i = 0; i < options.length; i++) { + if (options[i].getOptions().length > 0) { + return true; + } + } + return false; + } + + /** + * Returns true if filterDescription has options and the first option has a + * type equal to "boolean". + * + * @param filterDescription + * @return true if filterDescription has options and the first option has a + * type equal to "boolean" + */ + public static boolean isBooleanList(FilterDescription filterDescription) { + Option[] options = filterDescription.getOptions(); + if (options.length > 0) { + if ("boolean".equals(options[0].getType())) { + return true; + } + } + return false; + } + + /** + * Returns true if filterDescription has options and the first option has a + * value equal to null. + * + * @param filterDescription + * @return true if filterDescription has options and the first option has a + * value equal to null + */ + public static boolean isIdList(FilterDescription filterDescription) { + Option[] options = filterDescription.getOptions(); + if (options.length > 0) { + if (options[0].getValue() == null) { + return true; + } + } + return false; + } + + public static Option[] fixOptionLength(Option[] options, int length) { + if (options.length > length) { + Option[] firstOptions = new Option[length]; + Option[] otherOptions = new Option[options.length - (length - 1)]; + for (int i = 0; i < length - 1; i++) { + firstOptions[i] = options[i]; + fixOptionLength(options[i].getOptions(), length); + } + for (int i = length - 1; i < options.length; i++) { + otherOptions[i - (length - 1)] = options[i]; + } + Option newOption = new Option(); + newOption.setInternalName("more"); + newOption.setDisplayName("more"); + newOption.addOptions(fixOptionLength(otherOptions, length)); + firstOptions[length - 1] = newOption; + return firstOptions; + } else { + return options; + } + } + + public static Component getOptionButton( + FilterDescription filterDescription, QueryComponent queryComponent) { + JMenuBar menuBar = new JMenuBar(); + menuBar.setBorder(new EtchedBorder()); + JMenu menu = new JMenu("browse"); + menu.setFont(menu.getFont().deriveFont(Font.PLAIN)); + menuBar.add(menu); + Option[] options = fixOptionLength(filterDescription.getOptions(), 20); + for (int i = 0; i < options.length; i++) { + menu.add(getMenuItem(options[i], queryComponent)); + } + return menuBar; + } + + public static JMenuItem getMenuItem(final Option option, + final QueryComponent queryComponent) { + JMenuItem menuItem; + + Option[] options = option.getOptions(); + if (options.length > 0) { + JMenu menu = new JMenu(option.getDisplayName()); + menu.setFont(menu.getFont().deriveFont(Font.PLAIN)); + for (int i = 0; i < options.length; i++) { + menu.add(getMenuItem(options[i], queryComponent)); + } + menuItem = menu; + } else { + menuItem = new JMenuItem(option.getDisplayName()); + menuItem.setFont(menuItem.getFont().deriveFont(Font.PLAIN)); + menuItem.addActionListener(new ActionListener() { + + public void actionPerformed(ActionEvent e) { + queryComponent.setValue(option.getValue()); + } + + }); + } + + return menuItem; + } + + /** + * Returns the dataset referenced by a configuration object or null if the + * configuration object does not reference a dataset. + * + * @param martService + * the MartService to fetch the referenced dataset from + * @param referencedFromDataset + * the datset containing the configuration object + * @param bnco + * the configuration object + * @return the dataset referenced by a configuration object or null if the + * configuration object does not reference a dataset. + * @throws MartServiceException + * if and exception occurs while fetching the dataset + */ + public static MartDataset getReferencedDataset(MartService martService, + MartDataset referencedFromDataset, + BaseNamedConfigurationObject bnco, String softwareVersion) + throws MartServiceException { + if ("0.5".equals(softwareVersion)) { + String pointerDataset = bnco.getAttribute("pointerDataset"); + if (pointerDataset != null) { + return martService.getDataset(referencedFromDataset + .getVirtualSchema(), pointerDataset); + } else { + return null; + } + } else { + String[] splitName = bnco.getInternalName().split("\\."); + if (splitName.length > 1) { + return martService.getDataset(referencedFromDataset + .getVirtualSchema(), splitName[0]); + } else { + return null; + } + } + } + + /** + * Returns the filter description referenced by the filter description. + * + * @param martService + * the MartService to fetch the referenced filter description + * from + * @param dataset + * the datset containing the referenced filter description + * @param filterDescription + * the filter description + * @return the filter description referenced by the filter description + * @throws MartServiceException + * if and exception occurs while fetching the filter description + */ + public static FilterDescription getReferencedFilterDescription( + MartService martService, MartDataset dataset, + FilterDescription filterDescription, String softwareVersion) + throws MartServiceException { + if ("0.5".equals(softwareVersion)) { + String pointerFilter = filterDescription + .getAttribute("pointerFilter"); + if (pointerFilter != null) { + return getReferencedFilterDescription(martService, dataset, + pointerFilter); + } else { + return null; + } + } else { + String[] splitName = filterDescription.getInternalName().split( + "\\."); + FilterDescription ref = getReferencedFilterDescription(martService, + dataset, splitName[1]); + return ref; + } + } + + /** + * Returns the filter description referenced by the attribute description. + * + * @param martService + * the MartService to fetch the referenced filter description + * from + * @param dataset + * the datset containing the referenced filter description + * @param attributeDescription + * the attribute description + * @return the filter description referenced by the attribute description + * @throws MartServiceException + * if and exception occurs while fetching the filter description + */ + public static FilterDescription getReferencedFilterDescription( + MartService martService, MartDataset dataset, + AttributeDescription attributeDescription, String softwareVersion) + throws MartServiceException { + if ("0.5".equals(softwareVersion)) { + String pointerFilter = attributeDescription + .getAttribute("pointerFilter"); + if (pointerFilter != null) { + return getReferencedFilterDescription(martService, dataset, + pointerFilter); + } else { + return null; + } + } else { + String[] splitName = attributeDescription.getInternalName().split( + "\\."); + return getReferencedFilterDescription(martService, dataset, + splitName[2]); + } + } + + public static FilterDescription getReferencedFilterDescription( + MartService martService, MartDataset dataset, String filterName) + throws MartServiceException { + FilterDescription referencedFilter = null; + DatasetConfig datasetConfig = martService.getDatasetConfig(dataset); + List<FilterDescription> filterDescriptions = datasetConfig.getAllFilterDescriptions(); + for (FilterDescription filterDescription : filterDescriptions) { + if (filterName.equals(filterDescription.getInternalName())) { + if (!"true".equals(filterDescription.getHidden())) { + referencedFilter = filterDescription; + break; + } + } + } + return referencedFilter; + } + + public static FilterDescription getReferencedFilterDescription( + AttributeDescription attributeDescription, String softwareVersion) { + FilterDescription filterDescription = new FilterDescription(); + if ("0.5".equals(softwareVersion)) { + filterDescription.setInternalName(attributeDescription + .getInternalName()); + filterDescription.setAttribute(attributeDescription + .getAttribute("pointerDataset")); + filterDescription.setAttribute(attributeDescription + .getAttribute("pointerFilter")); + filterDescription.setAttribute(attributeDescription + .getAttribute("pointerInterface")); + } else { + String[] splitName = attributeDescription.getInternalName().split( + "\\."); + filterDescription + .setInternalName(splitName[0] + "." + splitName[2]); + } + return filterDescription; + } + + public static AttributeDescription getReferencedAttributeDescription( + MartService martService, MartDataset dataset, + AttributeDescription attributeDescription, String softwareVersion) + throws MartServiceException { + AttributeDescription referencedAttributeDescription = null; + String attributeName = null; + if ("0.5".equals(softwareVersion)) { + attributeName = attributeDescription + .getAttribute("pointerAttribute"); + } else { + String internalName = attributeDescription.getInternalName(); + String[] splitName = internalName.split("\\."); + if (splitName.length == 2) { + attributeName = splitName[1]; + } + } + if (attributeName != null) { + DatasetConfig datasetConfig = martService.getDatasetConfig(dataset); + if (datasetConfig.containsAttributeDescription(attributeName)) { + referencedAttributeDescription = datasetConfig + .getAttributeDescriptionByInternalName(attributeName); + } + } + return referencedAttributeDescription; + } + + /** + * Returns true if the internal name of the configuration object contains a + * '.' character. + * + * @param bnco + * the configuration object + * @return true if the internal name of the configuration object contains a + * '.' character + */ + public static boolean isReference(BaseNamedConfigurationObject bnco, + String softwareVersion) { + if ("0.5".equals(softwareVersion)) { + return bnco.getAttribute("pointerDataset") != null + && (bnco.getAttribute("pointerAttribute") != null || bnco.getAttribute("pointerFilter") != null); + } else { + return bnco.getInternalName().indexOf(".") != -1; + } + } + + /** + * Returns true if the internal name of the AttributeDescription has the + * format "[datasetName].[attributeName]". + * + * @param attributeDescription + * @return true if the internal name of the AttributeDescription has the + * format "[datasetName].[attributeName]" + */ + public static boolean isAttributeReference( + AttributeDescription attributeDescription, String softwareVersion) { + if ("0.5".equals(softwareVersion)) { + return attributeDescription.getAttribute("pointerAttribute") != null; + } else { + return attributeDescription.getInternalName().split("\\.").length == 2; + } + } + + /** + * Returns true if the internal name of the AttributeDescription has the + * format "[datasetName].filter.[filterName]". + * + * @param attributeDescription + * @return true if the internal name of the AttributeDescription has the + * format "[datasetName].filter.[filterName]" + */ + public static boolean isFilterReference( + AttributeDescription attributeDescription, String softwareVersion) { + if ("0.5".equals(softwareVersion)) { + return attributeDescription.getAttribute("pointerFilter") != null; + } else { + return attributeDescription.getInternalName().split("\\.").length == 3; + } + } + +// /** +// * Returns the qualified name of the AttributeDescription in the format +// * "[datasetName].[attributeName]". +// * +// * @param dataset +// * @param attributeDescription +// * @return true if the qualified name of the AttributeDescription in the +// * format "[datasetName].[attributeName]" +// */ +// public static String getQualifiedName(MartDataset dataset, +// AttributeDescription attributeDescription, String softwareVersion) { +// if ("0.5".equals(softwareVersion)) { +// if (isAttributeReference(attributeDescription, softwareVersion)) { +// return attributeDescription.getAttribute("pointerDataset") +// + "." +// + attributeDescription.getAttribute("pointerAttribute"); +// } else if (isFilterReference(attributeDescription, softwareVersion)) { +// return attributeDescription.getAttribute("pointerDataset") +// + "." +// + attributeDescription.getAttribute("pointerFilter"); +// } else { +// return dataset.getName() +// + attributeDescription.getInternalName(); +// } +// } else { +// if (isAttributeReference(attributeDescription, softwareVersion)) { +// return attributeDescription.getInternalName(); +// } else if (isFilterReference(attributeDescription, softwareVersion)) { +// String[] splitName = attributeDescription.getInternalName() +// .split("\\."); +// return splitName[0] + "." + splitName[2]; +// } else { +// return dataset.getName() +// + attributeDescription.getInternalName(); +// } +// } +// } + + public static String csvToValuePerLine(String csv) { + StringBuffer list = new StringBuffer(); + + String[] splitString = csv.split(","); + for (int i = 0; i < splitString.length; i++) { + if (i > 0) { + list.append(LINE_END); + } + list.append(splitString[i].trim()); + } + + return list.toString(); + } + + public static String valuePerLineToCsv(String list) { + return list.trim().replaceAll("\\s", ","); + } + + public static List<String> csvToList(String csv) { + List<String> list = new ArrayList<String>(); + + String[] splitString = csv.split(","); + for (int i = 0; i < splitString.length; i++) { + list.add(splitString[i].trim()); + } + + return list; + } + + /** + * Converts a List of objects to a comma separated string of the objects' + * string representations in the order given by the List's iterator. For + * example: + * + * <blockquote> + * + * <pre> + * List list = Arrays.toList(new String[] {"one", "two", "three"}; + * System.out.println(listToCsv(list)); + * </pre> + * + * </blockquote> would return the string "one,two,three". + * + * @param list + * @return a List of objects to a comma separated string of the object's + * string representations + */ + public static String listToCsv(List<?> list) { + StringBuffer sb = new StringBuffer(); + for (Iterator<?> iter = list.iterator(); iter.hasNext();) { + sb.append(iter.next().toString()); + if (iter.hasNext()) { + sb.append(','); + } + } + return sb.toString(); + } + + /** + * Returns true iff the 'display' or 'hidden' value of the configuration + * object is not "true". + * + * @param bnco + * the configuration object + * @return true iff the 'display' or 'hidden' value of configuration object + * is "true" + */ + public static boolean display(BaseNamedConfigurationObject bnco) { + boolean display = true; + String hideDisplay = bnco.getDisplay(); + if (hideDisplay != null) { + if (hideDisplay.equals("true")) { + display = false; + } + } else { + String hidden = bnco.getHidden(); + if (hidden != null) { + if (hidden.equals("true")) { + display = false; + } + } + } + return display; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentAdapter.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentAdapter.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentAdapter.java new file mode 100644 index 0000000..201cc1d --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentAdapter.java @@ -0,0 +1,109 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: QueryComponentAdapter.java,v $ + * Revision $Revision: 1.1 $ + * Release status $State: Exp $ + * Last modified on $Date: 2007/01/31 14:12:06 $ + * by $Author: davidwithers $ + * Created on 04-Apr-2006 + *****************************************************************/ +package org.biomart.martservice.config.event; + +/** + * An abstract adapter class for receiving <code>QueryComponent</code> events. + * The methods in this class are empty. This class exists as convenience for + * creating listener objects. + * + * @author David Withers + */ +public class QueryComponentAdapter implements QueryComponentListener { + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#attributeAdded(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void attributeAdded(QueryComponentEvent event) { + } + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#attributeRemoved(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void attributeRemoved(QueryComponentEvent event) { + } + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#filterAdded(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void filterAdded(QueryComponentEvent event) { + } + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#filterRemoved(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void filterRemoved(QueryComponentEvent event) { + } + + /* + * (non-Javadoc) + * + * @see org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentListener#filterChanged(org.embl.ebi.escience.scuflworkers.biomartservice.config.QueryComponentEvent) + */ + public void filterChanged(QueryComponentEvent event) { + } + + /* + * (non-Javadoc) + * + * @see org.biomart.martservice.config.event.QueryComponentListener#linkAdded(org.biomart.martservice.config.event.QueryComponentEvent) + */ + public void linkAdded(QueryComponentEvent event) { + } + + /* + * (non-Javadoc) + * + * @see org.biomart.martservice.config.event.QueryComponentListener#linkRemoved(org.biomart.martservice.config.event.QueryComponentEvent) + */ + public void linkRemoved(QueryComponentEvent event) { + } + + /* + * (non-Javadoc) + * + * @see org.biomart.martservice.config.QueryComponentListener#linkChanged(org.biomart.martservice.config.QueryComponentEvent) + */ + public void linkChanged(QueryComponentEvent event) { + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentEvent.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentEvent.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentEvent.java new file mode 100644 index 0000000..6fc5d18 --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentEvent.java @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: QueryComponentEvent.java,v $ + * Revision $Revision: 1.1 $ + * Release status $State: Exp $ + * Last modified on $Date: 2007/01/31 14:12:06 $ + * by $Author: davidwithers $ + * Created on 03-Apr-2006 + *****************************************************************/ +package org.biomart.martservice.config.event; + +import java.util.EventObject; + +import org.biomart.martservice.MartDataset; + +/** + * An event which indicates that a <code>QueryComponent</code> has been + * selected, deselected or its value has been modified. + * + * @author David Withers + */ +public class QueryComponentEvent extends EventObject { + private static final long serialVersionUID = -7576317475836030298L; + + private String name; + + private MartDataset dataset; + + private String value; + + /** + * Constructs a new <code>QueryComponentEvent</code> instance. + * + * @param source + * the source of the event + * @param name + * the name of the attribute or filter affected by this event + * @param dataset + * the dataset containing the attribute or filter affected by + * this event + */ + public QueryComponentEvent(Object source, String name, MartDataset dataset) { + this(source, name, dataset, null); + } + + /** + * Constructs a new <code>QueryComponentEvent</code> instance. + * + * @param source + * the source of the event + * @param name + * the name of the attribute or filter affected by this event + * @param dataset + * the dataset containing the attribute or filter affected by + * this event + * @param value + * the value of the filter affected by this event + */ + public QueryComponentEvent(Object source, String name, MartDataset dataset, + String value) { + super(source); + this.name = name; + this.dataset = dataset; + this.value = value; + } + + /** + * Returns the name of the attribute or filter affected by this event. + * + * @return the name of the attribute or filter affected by this event. + */ + public String getName() { + return name; + } + + /** + * Returns the dataset containing the attribute or filter affected by this + * event. + * + * @return the dataset containing the attribute or filter affected by this + * event. + */ + public MartDataset getDataset() { + return dataset; + } + + /** + * Returns the value of the filter affected by this event. + * + * @return the value of the filter affected by this event. + */ + public String getValue() { + return value; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentListener.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentListener.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentListener.java new file mode 100644 index 0000000..af63326 --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/event/QueryComponentListener.java @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: QueryComponentListener.java,v $ + * Revision $Revision: 1.1 $ + * Release status $State: Exp $ + * Last modified on $Date: 2007/01/31 14:12:06 $ + * by $Author: davidwithers $ + * Created on 03-Apr-2006 + *****************************************************************/ +package org.biomart.martservice.config.event; + +import java.util.EventListener; + +/** + * The listener interface for receiving QueryComponent events. + * + * @author David Withers + */ +public interface QueryComponentListener extends EventListener { + + /** + * Invoked when a <code>QueryComponent</code> for an attribute is + * selected. + * + * @param event the query component event + */ + public void attributeAdded(QueryComponentEvent event); + + /** + * Invoked when a <code>QueryComponent</code> for an attribute is + * deselected. + * + * @param event the query component event + */ + public void attributeRemoved(QueryComponentEvent event); + + /** + * Invoked when a <code>QueryComponent</code> for a filter is selected. + * + * @param event the query component event + */ + public void filterAdded(QueryComponentEvent event); + + /** + * Invoked when a <code>QueryComponent</code> for a filter is deselected. + * + * @param event the query component event + */ + public void filterRemoved(QueryComponentEvent event); + + /** + * Invoked when a <code>QueryComponent</code> for a filter is changed. + * + * @param event the query component event + */ + public void filterChanged(QueryComponentEvent event); + + /** + * Invoked when a <code>QueryComponent</code> for a link is selected. + * + * @param event the query component event + */ + public void linkAdded(QueryComponentEvent event); + + /** + * Invoked when a <code>QueryComponent</code> for a link is deselected. + * + * @param event the query component event + */ + public void linkRemoved(QueryComponentEvent event); + + /** + * Invoked when a <code>QueryComponent</code> for a dataset link id is + * changed. + * + * @param event the query component event + */ + public void linkChanged(QueryComponentEvent event); + +} http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-bioinformatics/blob/9e08cac0/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/ui/ConfigDisplayObject.java ---------------------------------------------------------------------- diff --git a/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/ui/ConfigDisplayObject.java b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/ui/ConfigDisplayObject.java new file mode 100644 index 0000000..89820d3 --- /dev/null +++ b/taverna-biomart-martservice/src/main/java/org/biomart/martservice/config/ui/ConfigDisplayObject.java @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2003 The University of Manchester + * + * Modifications to the initial code base are copyright of their + * respective authors, or their employers as appropriate. Authorship + * of the modifications may be determined from the ChangeLog placed at + * the end of this file. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * as published by the Free Software Foundation; either version 2.1 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + **************************************************************** + * Source code information + * ----------------------- + * Filename $RCSfile: ConfigDisplayObject.java,v $ + * Revision $Revision: 1.1 $ + * Release status $State: Exp $ + * Last modified on $Date: 2007/01/31 14:12:09 $ + * by $Author: davidwithers $ + * Created on 17-Mar-2006 + *****************************************************************/ +package org.biomart.martservice.config.ui; + +import java.awt.Component; + +import org.ensembl.mart.lib.config.BaseNamedConfigurationObject; + +/** + * An object containing a configuration object and it's graphical component. + * + * @author David Withers + */ +public class ConfigDisplayObject { + private BaseNamedConfigurationObject configObject; + + private Component component; + + /** + * Constructs an instance of a <code>ConfigDisplayObject</code> with the + * specified configuration object and a <code>null</code> component. + * + * @param configObject + * the configuration object; must not be <code>null</code> + */ + public ConfigDisplayObject(BaseNamedConfigurationObject configObject) { + this(configObject, null); + } + + /** + * Constructs an instance of a <code>ConfigDisplayObject</code> with the + * specified configuration object and component. + * + * @param configObject + * the configuration object; must not be <code>null</code> + * @param component + * the component + */ + public ConfigDisplayObject(BaseNamedConfigurationObject configObject, + Component component) { + if (configObject == null) { + throw new IllegalArgumentException( + "Parameter 'configObject' must not be null"); + } + this.configObject = configObject; + this.component = component; + } + + /** + * Returns the display name. + * + * @return the display name + */ + public String getDisplayName() { + return configObject.getDisplayName(); + } + + /** + * Returns the internal name. + * + * @return the internal name + */ + public String getInternalName() { + return configObject.getInternalName(); + } + + /** + * Returns the display name. + * + * @return the display name + */ + public String toString() { + return getDisplayName(); + } + + /** + * Returns the configuration object. + * + * @return the configuration object + */ + public BaseNamedConfigurationObject getConfigObject() { + return configObject; + } + + /** + * Returns the component. + * + * @return the component. + */ + public Component getComponent() { + return component; + } + +}