Changeset 2313


Ignore:
Timestamp:
May 23, 2006, 11:23:16 AM (16 years ago)
Author:
Nicklas Nordborg
Message:

Added possibility to create external links for extended properties

Location:
trunk
Files:
1 added
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/core/net/sf/basedb/core/ExtendedProperties.java

    r2304 r2313  
    213213        attr = property.getAttribute("length");
    214214        if (attr != null) length = attr.getIntValue();
    215       } catch (Exception e){}
     215      }
     216      catch (Exception e){}
    216217      try
    217218      {
    218219        attr = property.getAttribute("null");
    219220        if (attr != null) nullable = attr.getBooleanValue();
    220       } catch (Exception e){}
     221      }
     222      catch (Exception e){}
    221223      try
    222224      {
    223225        attr = property.getAttribute("insert");
    224226        if (attr != null) insertable = attr.getBooleanValue();
    225       } catch (Exception e){}
     227      }
     228      catch (Exception e){}
    226229      try
    227230      {
    228231        attr = property.getAttribute("update");
    229232        if (attr != null) updateable = attr.getBooleanValue();
    230       } catch (Exception e){}
     233      }
     234      catch (Exception e){}
    231235
    232236      Type type = null;
     
    266270        }
    267271      }
    268       properties.add(new ExtendedProperty(name, title, description, column, type, length, nullable, insertable, updateable));
     272      List<Element> links = (List<Element>)property.getChildren("link");
     273      List<ExtendedPropertyLinker> epLinks = null;
     274      if (links != null && links.size() > 0)
     275      {
     276        epLinks = new ArrayList<ExtendedPropertyLinker>(links.size());
     277        for (Element link : links)
     278        {
     279          String regexp = link.getAttributeValue("regexp");
     280          String url = link.getAttributeValue("url");
     281          epLinks.add(new ExtendedPropertyLinker(regexp, url));
     282        }
     283      }
     284      properties.add(new ExtendedProperty(name, title, description, column, type, length, nullable, insertable, updateable, epLinks));
    269285    }
    270286    return properties;
  • trunk/src/core/net/sf/basedb/core/ExtendedProperty.java

    r2304 r2313  
    2323*/
    2424package net.sf.basedb.core;
     25
     26import java.util.List;
    2527
    2628/**
     
    4345  private final boolean insertable;
    4446  private final boolean updateable;
     47  private final List<ExtendedPropertyLinker> linkers;
    4548
    4649  /**
     
    4952  */
    5053  ExtendedProperty(String name, String title, String description, String column,
    51     Type type, int length, boolean nullable, boolean insertable, boolean updateable)
     54    Type type, int length, boolean nullable, boolean insertable, boolean updateable,
     55    List<ExtendedPropertyLinker> linkers)
    5256  {
    5357    this.name = name;
     
    6064    this.insertable = insertable;
    6165    this.updateable = updateable;
     66    this.linkers = linkers;
    6267  }
    6368
     
    147152  }
    148153
     154  /**
     155    Parse a string and return an object of the correct type for this property.
     156    @param value The value to parse
     157    @return An object
     158    @throws InvalidDataException If the string cannot be converted to the correct type
     159    @see #getType()
     160  */
    149161  public Object parseString(String value)
    150162    throws InvalidDataException
     
    153165  }
    154166
     167  /**
     168    Check if an object is valid according to the specifications of this property.
     169    The checks include checking for null values if the property not {@link #isNullable()},
     170    check that the object is of the correct {@link #getType()} and the maximum
     171    {@link #getLength()} of a string.
     172    @param value The value to check
     173    @throws InvalidDataException
     174  */
    155175  public void validateValue(Object value)
    156176    throws InvalidDataException
     
    176196    }
    177197  }
     198 
     199  /**
     200    Create a link for this extended property. This method checks the
     201    linkers in the order they are defined. The first one to return a non-null
     202    value is the winner.
     203    @param value The value to link
     204    @return The URL, or null if no matching linker could be found
     205  */
     206  public String getUrl(Object value)
     207  {
     208    if (value == null) return null;
     209    String url = null;
     210    if (linkers != null)
     211    {
     212      for (ExtendedPropertyLinker linker : linkers)
     213      {
     214        url = linker.getUrl(value);
     215        if (url != null) return url;
     216      }
     217    }
     218    return url;
     219  }
     220 
    178221}
    179222
  • trunk/src/core/net/sf/basedb/core/RawDataProperty.java

    r2304 r2313  
    4444    Type type, int length, boolean nullable, int channel)
    4545  {
    46     super(name, title, description, column, type, length, nullable, true, false);
     46    super(name, title, description, column, type, length, nullable, true, false, null);
    4747    this.channel = channel;
    4848  }
  • trunk/src/core/net/sf/basedb/core/dtd/extended-properties.dtd

    r2304 r2313  
    3030>
    3131
    32 <!ELEMENT property EMPTY >
     32<!ELEMENT property (link*) >
    3333
    3434<!ATTLIST property
     
    4343  update (true|false) "true"
    4444>
     45
     46<!ELEMENT link EMPTY >
     47<!ATTLIST link
     48  regexp CDATA #IMPLIED
     49  url CDATA #REQUIRED
     50>
     51
     52
     53
  • trunk/src/extended-properties.xml

    r2304 r2313  
    4141      type="string"
    4242      length="255"
    43     />
     43      >
     44      <link
     45        regexp="\w+\.\d+"
     46        url="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=unigene&amp;term={value}[ClusterID]"
     47      />
     48    </property>
    4449    <property
    4550      name="length"
     
    136141      type="string"
    137142      length="255"
    138     />
     143      >
     144      <link
     145        regexp="\d+"
     146        url="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?db=gene&amp;cmd=Retrieve&amp;dopt=Graphics&amp;list_uids={value}"
     147      />
     148    </property>
    139149    <property
    140150      name="omim"
     
    144154      type="string"
    145155      length="255"
    146     />
     156      >
     157      <link
     158        regexp="\d+"
     159        url="http://www.ncbi.nlm.nih.gov/entrez/dispomim.cgi?id={value}"
     160      />
     161    </property>
    147162  </class>
    148163</extended-properties>
  • trunk/www/lims/arraydesigns/features/list_features.jsp

    r2304 r2313  
    618618                    String name = ep.getName();
    619619                    Object value = reporter.getExtended(name);
     620                    String link = ep.getUrl(value);
    620621                    if (value instanceof Date) value = Values.formatDate((Date)value);
     622                    value = HTML.encodeTags(value == null ? "" : value.toString());
     623                    if (link != null)
     624                    {
     625                      value = "<a href=\"" + link + "\" target=\"_blank\">" + value + "</a>";
     626                    }
    621627                    %>
    622                     <tbl:cell column="<%="reporter."+name%>"><%=HTML.encodeTags(value == null ? "" : value.toString())%></tbl:cell>
     628                    <tbl:cell column="<%="reporter."+name%>"><%=value%></tbl:cell>
    623629                    <%
    624630                  }
  • trunk/www/lims/arraydesigns/features/view_feature.jsp

    r2304 r2313  
    289289              String name = ep.getName();
    290290              Object value = reporter.getExtended(name);
     291              String link = ep.getUrl(value);
    291292              if (value instanceof Date) value = Values.formatDate((Date)value);
     293              value = HTML.encodeTags(value == null ? "" : value.toString());
     294              if (link != null)
     295              {
     296                value = "<a href=\"" + link + "\" target=\"_blank\">" + value + "</a>";
     297              }
    292298              %>
    293299                <%=needsTr ? "<tr valign=\"top\">" : "" %>
    294300                <td class="prompt"><%=HTML.encodeTags(ep.getTitle())%></td>
    295                 <td><%=HTML.encodeTags(value == null ? "" : value.toString())%></td>
     301                <td><%=value%></td>
    296302                <td>&nbsp;&nbsp;</td>
    297303                <%=needsTr ? "" : "</tr>"%>
  • trunk/www/lims/plates/wells/list_wells.jsp

    r2304 r2313  
    513513                    String name = ep.getName();
    514514                    Object value = reporter.getExtended(name);
     515                    String link = ep.getUrl(value);
    515516                    if (value instanceof Date) value = Values.formatDate((Date)value);
     517                    value = HTML.encodeTags(value == null ? "" : value.toString());
     518                    if (link != null)
     519                    {
     520                      value = "<a href=\"" + link + "\" target=\"_blank\">" + value + "</a>";
     521                    }
    516522                    %>
    517                     <tbl:cell column="<%="reporter."+name%>"><%=HTML.encodeTags(value == null ? "" : value.toString())%></tbl:cell>
     523                    <tbl:cell column="<%="reporter."+name%>"><%=value%></tbl:cell>
    518524                    <%
    519525                  }
  • trunk/www/lims/plates/wells/view_well.jsp

    r2304 r2313  
    262262              String name = ep.getName();
    263263              Object value = reporter.getExtended(name);
     264              String link = ep.getUrl(value);
    264265              if (value instanceof Date) value = Values.formatDate((Date)value);
     266              value = HTML.encodeTags(value == null ? "" : value.toString());
     267              if (link != null)
     268              {
     269                value = "<a href=\"" + link + "\" target=\"_blank\">" + value + "</a>";
     270              }
    265271              %>
    266272                <%=needsTr ? "<tr valign=\"top\">" : "" %>
    267273                <td class="prompt"><%=HTML.encodeTags(ep.getTitle())%></td>
    268                 <td><%=HTML.encodeTags(value == null ? "" : value.toString())%></td>
     274                <td><%=value%></td>
    269275                <td>&nbsp;&nbsp;</td>
    270276                <%=needsTr ? "" : "</tr>"%>
  • trunk/www/views/rawbioassays/rawdata/list_rawdata.jsp

    r2304 r2313  
    685685                    String name = ep.getName();
    686686                    Object value = reporter.getExtended(name);
     687                    String link = ep.getUrl(value);
    687688                    if (value instanceof Date) value = Values.formatDate((Date)value);
     689                    value = HTML.encodeTags(value == null ? "" : value.toString());
     690                    if (link != null)
     691                    {
     692                      value = "<a href=\"" + link + "\" target=\"_blank\">" + value + "</a>";
     693                    }
    688694                    %>
    689                     <tbl:cell column="<%="reporter."+name%>"><%=HTML.encodeTags(value == null ? "" : value.toString())%></tbl:cell>
     695                    <tbl:cell column="<%="reporter."+name%>"><%=value%></tbl:cell>
    690696                    <%
    691697                  }
  • trunk/www/views/reporterlists/reporters/list_reporters.jsp

    r2216 r2313  
    410410                  name = ep.getName();
    411411                  Object value = item.getExtended(name);
     412                  String link = ep.getUrl(value);
    412413                  if (value instanceof Date) value = Values.formatDate((Date)value);
     414                  value = HTML.encodeTags(value == null ? "" : value.toString());
     415                  if (link != null)
     416                  {
     417                    value = "<a href=\"" + link + "\" target=\"_blank\">" + value + "</a>";
     418                  }
    413419                  %>
    414                   <tbl:cell column="<%=name%>"><%=HTML.encodeTags(value == null ? "" : value.toString())%></tbl:cell>
     420                  <tbl:cell column="<%=name%>"><%=value%></tbl:cell>
    415421                  <%
    416422                }
  • trunk/www/views/reporters/list_reporters.jsp

    r2304 r2313  
    404404                  name = ep.getName();
    405405                  Object value = item.getExtended(name);
     406                  String link = ep.getUrl(value);
    406407                  if (value instanceof Date) value = Values.formatDate((Date)value);
     408                  value = HTML.encodeTags(value == null ? "" : value.toString());
     409                  if (link != null)
     410                  {
     411                    value = "<a href=\"" + link + "\" target=\"_blank\">" + value + "</a>";
     412                  }
    407413                  %>
    408                   <tbl:cell column="<%=name%>"><%=HTML.encodeTags(value == null ? "" : value.toString())%></tbl:cell>
     414                  <tbl:cell column="<%=name%>"><%=value%></tbl:cell>
    409415                  <%
    410416                }
  • trunk/www/views/reporters/view_reporter.jsp

    r2304 r2313  
    193193          String name = ep.getName();
    194194          Object value = reporter.getExtended(name);
     195          String link = ep.getUrl(value);
    195196          if (value instanceof Date) value = Values.formatDate((Date)value);
     197          value = HTML.encodeTags(value == null ? "" : value.toString());
     198          if (link != null)
     199          {
     200            value = "<a href=\"" + link + "\" target=\"_blank\">" + value + "</a>";
     201          }
    196202          %>
    197203            <%=needsTr ? "<tr valign=\"top\">" : "" %>
    198204            <td class="prompt"><%=HTML.encodeTags(ep.getTitle())%></td>
    199             <td><%=HTML.encodeTags(value == null ? "" : value.toString())%></td>
     205            <td><%=value%></td>
    200206            <td>&nbsp;&nbsp;</td>
    201207            <%=needsTr ? "" : "</tr>"%>
Note: See TracChangeset for help on using the changeset viewer.