Differences between revisions 2 and 11 (spanning 9 versions)
Revision 2 as of 2005-09-30 19:20:46
Size: 7688
Editor: mskresolve-b
Comment:
Revision 11 as of 2005-09-30 19:32:04
Size: 708
Editor: mskresolve-b
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
{{{#!java
package cytoscape.data;
## page was renamed from RFC1 HOME
## page was renamed from CytoscapeData RFC
=== Cytoscape RFC #1: Replacing Graph Obj Attributes ===
Line 4: Line 5:
import cytoscape.data.attr.CyData;
import cytoscape.data.attr.CyDataDefinition;
This is an official Request for Comment (RFC) for replacing {{{GraphObjAttributes}}}.
Line 7: Line 7:
import java.util.List;
import java.util.Map;
'''Status:''' Version 0.1 of the proposal is below. This represents Ethan's first stab at creating a new API.
Line 10: Line 9:
'''How to Comment:''' To view/add comments, click on any of the links below, and add your comments directly to the Wiki.
Line 11: Line 11:
public interface AttributeData { '''General Notes:'''
Line 13: Line 13:
    // 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. ["RFC1_Class_Name"]

Cytoscape RFC #1: Replacing Graph Obj Attributes

This is an official Request for Comment (RFC) for replacing GraphObjAttributes.

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. ["RFC1_Class_Name"]

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