Differences between revisions 2 and 3
Revision 2 as of 2005-09-30 19:20:46
Size: 7688
Editor: mskresolve-b
Comment:
Revision 3 as of 2005-09-30 19:25:15
Size: 507
Editor: mskresolve-b
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
{{{#!java
package cytoscape.data;
This is an official Request for Comment (RFC) for the new CytoscapeData API.
Line 4: Line 3:
import cytoscape.data.attr.CyData;
import cytoscape.data.attr.CyDataDefinition;
Status: Version 0.1 of the proposal is below. This represents Ethan's first stab at creating a new API.
Line 7: Line 5:
import java.util.List;
import java.util.Map;
How to Comment: To view/add comments, click on any of the links below, and add your comments directly to the Wiki.
Line 10: Line 7:
General Notes:
Line 11: Line 9:
public interface AttributeData {

    // TODO: Event Listener Framework?
    // TODO: Rowan's labels?

    /**
     * Gets a List of All Attribute Names.
     *
     * @return An Array of String Objects.
     */
    public String[] getAttributeNames();

    /**
     * Determines if the specified id/attributeName pair exists.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @return true or false.
     */
    public boolean hasAttribute(String id, String attributeName);

    /**
     * Sets an id/attributeName pair of type boolean.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @param value boolean value.
     */
    public void setAttribute(String id, String attributeName, boolean value);

    /**
     * Sets an id/attributeName pair of type integer.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @param value integer value.
     */
    public void setAttribute(String id, String attributeName, int value);

    /**
     * Sets an id/attributeName pair of type double.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @param value double value.
     */
    public void setAttribute(String id, String attributeName, double value);

    /**
     * Sets an id/attributeName pair of type String.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @param value string value.
     */
    public void setAttribute(String id, String attributeName, String value);

    /**
     * Gets a boolean value at the specified id/attributeName.
     * <P>If attributeName refers to a List, the zeroeth element in that list is
     * returned.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @return Boolean object, or null if no id/attributeName pair is found.
     * @throws ClassCastException Indicates that the specified attribute
     * is not of type Boolean.
     */
    public Boolean getBooleanAttribute(String id, String attributeName)
            throws ClassCastException;

    /**
     * Gets an integer value at the specified id/attributeName.
     * <P>If attributeName refers to a List, the zeroeth element in that list is
     * returned.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @return Integer object, or null if no id/attributeName pair is found.
     * @throws ClassCastException Indicates that the specified attribute
     * is not of type Integer.
     */
    public Integer getIntegerAttribute(String id, String attributeName)
            throws ClassCastException;

    /**
     * Gets a double value at the specified id/attributeName.
     * <P>If attributeName refers to a List, the zeroeth element in that list is
     * returned.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @return Double object, or null if no id/attributeName pair is found..
     * @throws ClassCastException Indicates that the specified attribute
     * is not of type Double.
     */
    public Double getDoubleAttribute(String id, String attributeName)
            throws ClassCastException;

    /**
     * Gets a String value at the specified id/attributeName.
     * <P>If attributeName refers to a List, the zeroeth element in that list is
     * returned.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @return String object, or null if no id/attributeName pair is found.
     * @throws ClassCastException Indicates that the specified attribute
     * is not of type String.
     */
    public String getStringAttribute(String id, String attributeName)
            throws ClassCastException;

    /**
     * Gets the Class of the specified attribute.
     *
     * @param attributeName Attribute Name.
     * @return Return type will be of type: Boolean, Integer, Double,
     * String, List or Map. If attributeName has not been
     * defined, this method will return null.
     */
    public Class getClass(String attributeName);

    /**
     * Delete the id/attributeName pair.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @return true indicates attribute was
     * successfully removed.
     */
    public boolean deleteAttribute(String id, String attributeName);

    /**
     * Sets a List of Attributes.
     * <P><B>Note:</B>
     * <UL>
     * <LI>All items within the list must be of the same type,
     * and and chosen from the following list: Boolean, Integer, Double,
     * or String.
     * </LI>
     * </UL>
     * If the above requirement is not met, an IllegalArgumentException
     * will be thrown.
     *
     * @param id unique identifier.
     * @param list attribute name.
     * @param list List Object.
     */
    public void setAttributeList(String id, String attributeName, List list)
            throws IllegalArgumentException;

    /**
     * Gets a List of attributes for the id/attributeName pair.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @return List object.
     * @throws ClassCastException Indicates that the specified attribute
     * is not of type List.
     */
    public List getAttributeList(String id, String attributeName)
            throws ClassCastException;

    /**
     * Sets a Map of Attribute Values.
     * <P><B>Note:</B>
     * <UL>
     * <LI>All keys within the Map must be of type String.
     * <LI>All values within the Map must be of the same type,
     * and chosen from the following list: Boolean, Integer, Double, or String.
     * </UL>
     * If the above requirements are not met, an IllegalArgumentException
     * will be thrown.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @param map Map Object.
     */
    public void setAttributeMap(String id, String attributeName,
            Map map);

    /**
     * Gets a Map of Attribute Value.
     *
     * @param id unique identifier.
     * @param attributeName attribute name.
     * @return Map Object.
     */
    public Map getAttributeMap(String id, String attributeName);

    /**
     * Gets the CyData Object, which stores the actual attribute values.
     * <P>By using CyData and CyDataDefintion directly, you can store
     * arbitrarily complex data structures. Recommended for advanced
     * coders only.
     *
     * @return CyData Object.
     */
    public CyData getCyData();

    /**
     * Gets the CyDataDefinition Object, which stores attribute definitions.
     * <P>By using CyData and CyDataDefintion directly, you can store
     * arbitrarily complex data structures. Recommended for advanced
     * coders only.
     *
     * @return CyDataDefintion Object.
     */
    public CyDataDefinition getCyDataDefinition();
}
}}}
* The interface is now called AttributeData, rather than CytoscapeData. I think this is more descriptive, and besides, not all our classes have to have the word Cytoscape in it.

This is an official Request for Comment (RFC) for the new CytoscapeData API.

Status: Version 0.1 of the proposal is below. This represents Ethan's first stab at creating a new API.

How to Comment: To view/add comments, click on any of the links below, and add your comments directly to the Wiki.

General Notes:

* The interface is now called AttributeData, rather than CytoscapeData. I think this is more descriptive, and besides, not all our classes have to have the word Cytoscape in it.

RFC_1 (last edited 2009-02-12 01:04:12 by localhost)

Funding for Cytoscape is provided by a federal grant from the U.S. National Institute of General Medical Sciences (NIGMS) of the Na tional Institutes of Health (NIH) under award number GM070743-01. Corporate funding is provided through a contract from Unilever PLC.

MoinMoin Appliance - Powered by TurnKey Linux