Differences between revisions 1 and 48 (spanning 47 versions)
Revision 1 as of 2005-09-30 19:19:30
Size: 7672
Editor: mskresolve-b
Comment:
Revision 48 as of 2005-10-04 19:56:15
Size: 2872
Editor: mskresolve-b
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
package cytoscape.data; ## page was renamed from RFC1 HOME
## page was renamed from CytoscapeData RFC
[[TableOfContents([2])]]
Line 3: Line 5:
import cytoscape.data.attr.CyData;
import cytoscape.data.attr.CyDataDefinition;
=== About this Document ===
Line 6: Line 7:
import java.util.List;
import java.util.Map;
This is an official Request for Comment (RFC) for replacing {{{GraphObjAttributes}}}.
Line 9: Line 9:
=== Status ===
Line 10: Line 11:
public interface AttributeData { 10/4/2005, Version 0.2 of the proposal is below. This represents a beta version of the API, with input from: Nerius, Iliana, Rowan, Gary and Ethan.
Line 12: Line 13:
    // TODO: Event Listener Framework?
    // TODO: Rowan's labels?
=== How to Comment: ===
Line 15: Line 15:
    /**
     * Gets a List of All Attribute Names.
     *
     * @return An Array of String Objects.
     */
    public String[] getAttributeNames();
To view/add comments, click on any of 'Comment' links below. By adding your ideas to the Wiki directly, we can more easily organize everyone's ideas, and keep clear records. Be sure to include today's date and your name for each comment. Here is an example to get things started: ["/RFC1 Comment Name"].
Line 22: Line 17:
    /**
     * 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);
'''Try to keep your comments as concrete and constructive as possible. For example, if you find a part of the API makes no sense, please say so, but don't stop there. Take the extra step and propose alternatives.'''
Line 31: Line 19:
    /**
     * 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);
=== General Notes: ===
Line 40: Line 21:
    /**
     * 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);
  * The new interface is now called {{{CyAttributes}}}. ["/RFC1 Comment Name"]
 
  * {{{CyData}}} is now called {{{MultiHashMap}}}. We wanted to give it a name that reflected
its role as a data structure. ["/RFC1 Comment CyData Name"]
Line 49: Line 26:
    /**
     * 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);
  * The API provides several overloaded version of {{{setAttribute}}}, one for each basic data type, e.g. {{{setAttribute(String id, String attributeName, double value)}}}. It also provides several varients of getAttribute, e.g. {{{Double getDoubleAttribute(String id, String attributeName)}}}. ["/RFC1 Comment Getters Setters"]
Line 58: Line 28:
    /**
     * 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);
  * {{{CyAttributes}}} provides support for 'simple' lists. A 'simple' list is defined as follows:
     * All items within the list are of the same type, and are chosen from one of the following: Boolean, Integer, Double or String. ["/RFC1 Comment Lists"]
Line 67: Line 31:
    /**
     * 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;
  * {{{CyAttributes}}} provides support for 'simple' maps. A 'simple' map is defined as follows:
    * All keys within the map are of type: String.
    * All values within the map are of the same type, and are chosen from one of the following: Boolean, Integer, Double or String. ["/RFC1 Comment Maps"]
Line 81: Line 35:
    /**
     * 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;
  * To do complicated things, such as create arbitarily complex data structures, you can obtain a copy of {{{CyData}}} and {{{CyDataDefinition}}} from {{{AttributeData}}}. Advanced users who need this functionality can read through the {{{CyData}}} and {{{CyDataDefinition}}} Javadocs. ["/RFC1 Comment Complex Data Structures"]
Line 95: Line 37:
    /**
     * 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;
  * Item not yet covered: Event / Listener Framework ["/RFC1 Comment Event Framework"]
Line 109: Line 39:
    /**
     * 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;
  * Item not yet covered: support for Labels (Rowan has this feature in the current implementation of {{{CytoscapeData}}}) ["/RFC1 Comment Labels"]
Line 123: Line 41:
    /**
     * 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);
  * Item not yet covered: recommended attribute names ["/RFC1 Comment Attribute Names"]
Line 133: Line 43:
    /**
     * 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);
 ["/RFC1 Comment API"]
Line 143: Line 45:
    /**
     * 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();
}
=== Proposed API: Version 0.1 ===

TableOfContents([2])

About this Document

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

Status

10/4/2005, Version 0.2 of the proposal is below. This represents a beta version of the API, with input from: Nerius, Iliana, Rowan, Gary and Ethan.

How to Comment:

To view/add comments, click on any of 'Comment' links below. By adding your ideas to the Wiki directly, we can more easily organize everyone's ideas, and keep clear records. Be sure to include today's date and your name for each comment. Here is an example to get things started: ["/RFC1 Comment Name"].

Try to keep your comments as concrete and constructive as possible. For example, if you find a part of the API makes no sense, please say so, but don't stop there. Take the extra step and propose alternatives.

General Notes:

  • The new interface is now called CyAttributes. ["/RFC1 Comment Name"]

  • CyData is now called MultiHashMap. We wanted to give it a name that reflected

its role as a data structure. ["/RFC1 Comment CyData Name"]

  • The API provides several overloaded version of setAttribute, one for each basic data type, e.g. setAttribute(String id, String attributeName, double value). It also provides several varients of getAttribute, e.g. Double getDoubleAttribute(String id, String attributeName). ["/RFC1 Comment Getters Setters"]

  • CyAttributes provides support for 'simple' lists. A 'simple' list is defined as follows:

    • All items within the list are of the same type, and are chosen from one of the following: Boolean, Integer, Double or String. ["/RFC1 Comment Lists"]
  • CyAttributes provides support for 'simple' maps. A 'simple' map is defined as follows:

    • All keys within the map are of type: String.
    • All values within the map are of the same type, and are chosen from one of the following: Boolean, Integer, Double or String. ["/RFC1 Comment Maps"]
  • To do complicated things, such as create arbitarily complex data structures, you can obtain a copy of CyData and CyDataDefinition from AttributeData. Advanced users who need this functionality can read through the CyData and CyDataDefinition Javadocs. ["/RFC1 Comment Complex Data Structures"]

  • Item not yet covered: Event / Listener Framework ["/RFC1 Comment Event Framework"]
  • Item not yet covered: support for Labels (Rowan has this feature in the current implementation of CytoscapeData) ["/RFC1 Comment Labels"]

  • Item not yet covered: recommended attribute names ["/RFC1 Comment Attribute Names"]
  • ["/RFC1 Comment API"]

Proposed API: Version 0.1

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