<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://can4eve.bitplan.com/index.php?action=history&amp;feed=atom&amp;title=Concept%3ACANInfo%2FJava</id>
	<title>Concept:CANInfo/Java - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://can4eve.bitplan.com/index.php?action=history&amp;feed=atom&amp;title=Concept%3ACANInfo%2FJava"/>
	<link rel="alternate" type="text/html" href="http://can4eve.bitplan.com/index.php?title=Concept:CANInfo/Java&amp;action=history"/>
	<updated>2026-04-24T05:21:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.5</generator>
	<entry>
		<id>http://can4eve.bitplan.com/index.php?title=Concept:CANInfo/Java&amp;diff=228&amp;oldid=prev</id>
		<title>Wf: created by WikiTask 2017-06-10T15:03:24Z</title>
		<link rel="alternate" type="text/html" href="http://can4eve.bitplan.com/index.php?title=Concept:CANInfo/Java&amp;diff=228&amp;oldid=prev"/>
		<updated>2017-06-10T15:03:24Z</updated>

		<summary type="html">&lt;p&gt;created by WikiTask 2017-06-10T15:03:24Z&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=== java code ===&lt;br /&gt;
&amp;lt;source lang='java' id='javacode'&amp;gt;@// This is a rythm template&lt;br /&gt;
@// the args are the standard wikiTask arguments&lt;br /&gt;
@import org.sidif.triple.TripleQuery&lt;br /&gt;
@import org.sidif.triple.Triple&lt;br /&gt;
@import com.alibaba.fastjson.JSON&lt;br /&gt;
@args() {&lt;br /&gt;
  String title &lt;br /&gt;
  String logo&lt;br /&gt;
  org.sidif.wiki.WikiTask wikiTask&lt;br /&gt;
  org.sidif.triple.TripleStore tripleStore&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@def static {&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
   * Base class&lt;br /&gt;
   */&lt;br /&gt;
  static abstract class TopicBase {&lt;br /&gt;
    // each Topic has a pageid - for non subobject thats the pagename&lt;br /&gt;
    public String pageid;&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * get a WikiSon version of the given name value&lt;br /&gt;
     * &lt;br /&gt;
     * @param name&lt;br /&gt;
     * @param value&lt;br /&gt;
     * @return - the string representation&lt;br /&gt;
     */&lt;br /&gt;
    public String toWikiSon(String name, String value) {&lt;br /&gt;
      String result = &amp;quot;&amp;lt;!-- &amp;quot; + name + &amp;quot; is null--&amp;gt;\n&amp;quot;;&lt;br /&gt;
      if (value != null)&lt;br /&gt;
        result = &amp;quot;|&amp;quot; + name + &amp;quot;=&amp;quot; + value + &amp;quot;\n&amp;quot;;&lt;br /&gt;
      return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * get the propertySidif of the given property&lt;br /&gt;
     * &lt;br /&gt;
     * @param name&lt;br /&gt;
     * @param value&lt;br /&gt;
     * @return&lt;br /&gt;
     */&lt;br /&gt;
    public static String propertySiDIF(String name, String value, String type) {&lt;br /&gt;
      // default is an empty string - no property line for emtpy values&lt;br /&gt;
      String result = &amp;quot;&amp;quot;;&lt;br /&gt;
      // if the value is not empty&lt;br /&gt;
      if ((value != null) &amp;amp;&amp;amp; (!(&amp;quot;&amp;quot;.equals(value.trim())))) {&lt;br /&gt;
        // do we need to quote the result?&lt;br /&gt;
        String quote = &amp;quot;&amp;quot;;&lt;br /&gt;
        // this depends on the Type&lt;br /&gt;
        if (&amp;quot;Text&amp;quot;.equals(type)) {&lt;br /&gt;
          quote = &amp;quot;\&amp;quot;&amp;quot;;&lt;br /&gt;
        }&lt;br /&gt;
        // create a SIDIF Property line like&lt;br /&gt;
        // &amp;quot;John&amp;quot; is lastname of it&lt;br /&gt;
        result += quote + value + quote + &amp;quot; is &amp;quot; + name + &amp;quot; of it\n&amp;quot;;&lt;br /&gt;
      }&lt;br /&gt;
      // return the SiDIF property line&lt;br /&gt;
      return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * get me as a String&lt;br /&gt;
     * &lt;br /&gt;
     * @param name&lt;br /&gt;
     * @param value&lt;br /&gt;
     * @return&lt;br /&gt;
     */&lt;br /&gt;
    public static String propertySiDIF(String name, String value) {&lt;br /&gt;
      String result = propertySiDIF(name, value, &amp;quot;Text&amp;quot;);&lt;br /&gt;
      return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * check if the given boolean String value is true&lt;br /&gt;
     * &lt;br /&gt;
     * @param value&lt;br /&gt;
     * @return true if the value is not null and has true/TRUE as it's string&lt;br /&gt;
     *         content&lt;br /&gt;
     */&lt;br /&gt;
    public boolean isTrue(String value) {&lt;br /&gt;
      boolean result = false;&lt;br /&gt;
      if (value != null &amp;amp;&amp;amp; value.toLowerCase().equals(&amp;quot;true&amp;quot;)) {&lt;br /&gt;
        result = true;&lt;br /&gt;
      }&lt;br /&gt;
      return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * initialize&lt;br /&gt;
     */&lt;br /&gt;
    public void init(TripleQuery query) {&lt;br /&gt;
    }&lt;br /&gt;
  } // TopicBase&lt;br /&gt;
 /**&lt;br /&gt;
  * CANInfo&lt;br /&gt;
  * OBD-II Diagnostic CAN Bus Information item&lt;br /&gt;
  */&lt;br /&gt;
  public static class CANInfo extends TopicBase {&lt;br /&gt;
  &lt;br /&gt;
    public String name;&lt;br /&gt;
    public String description;&lt;br /&gt;
    public String unit;&lt;br /&gt;
    public String pid;&lt;br /&gt;
&lt;br /&gt;
    public String getName() { return name; }&lt;br /&gt;
    public void setName(String pName) { name=pName; }&lt;br /&gt;
    public String getDescription() { return description; }&lt;br /&gt;
    public void setDescription(String pDescription) { description=pDescription; }&lt;br /&gt;
    public String getUnit() { return unit; }&lt;br /&gt;
    public void setUnit(String pUnit) { unit=pUnit; }&lt;br /&gt;
    public String getPid() { return pid; }&lt;br /&gt;
    public void setPid(String pPid) { pid=pPid; }&lt;br /&gt;
    /**&lt;br /&gt;
     * convert this CANInfo to a JSON string&lt;br /&gt;
     */&lt;br /&gt;
    public String toJson() { return JSON.toJSONString(this); }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * convert this CANInfo to a WikiSon string&lt;br /&gt;
     */&lt;br /&gt;
    public String toWikiSon() {&lt;br /&gt;
      String wikison= &amp;quot;{{CANInfo\n&amp;quot;;&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;name&amp;quot;,name);&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;description&amp;quot;,description);&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;unit&amp;quot;,unit);&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;pid&amp;quot;,pid);&lt;br /&gt;
      wikison+=&amp;quot;}}\n&amp;quot;;&lt;br /&gt;
      return wikison;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    /**  &lt;br /&gt;
     * get the pageid for this topic&lt;br /&gt;
     */&lt;br /&gt;
    public String getPageid() { return pageid; };&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * default constructor for CANInfo&lt;br /&gt;
     */&lt;br /&gt;
    public CANInfo() {}&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * construct a CANInfo from the given Triple&lt;br /&gt;
     * @param query - the TripleQuery to get the triples from&lt;br /&gt;
     * @param pCANInfoTriple - the triple to construct me from&lt;br /&gt;
     */&lt;br /&gt;
    public CANInfo(TripleQuery query,Triple pCANInfoTriple) {&lt;br /&gt;
      this(query,pCANInfoTriple.getSubject().toString());&lt;br /&gt;
    } // constructor&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * construct a CANInfo from the given pageId&lt;br /&gt;
     * @param query - the TripleQuery to get the triples from&lt;br /&gt;
     * @param pageid - pageid&lt;br /&gt;
     */&lt;br /&gt;
    public CANInfo(TripleQuery query,String pageid) {&lt;br /&gt;
      this.pageid=pageid;&lt;br /&gt;
      Triple nameTriple=query.selectSingle(pageid,&amp;quot;name&amp;quot;,null);&lt;br /&gt;
      if (nameTriple==null)&lt;br /&gt;
        nameTriple=query.selectSingle(pageid,&amp;quot;Property:CANInfo_name&amp;quot;,null);&lt;br /&gt;
      if (nameTriple!=null) &lt;br /&gt;
        name=nameTriple.getObject().toString();&lt;br /&gt;
      Triple descriptionTriple=query.selectSingle(pageid,&amp;quot;description&amp;quot;,null);&lt;br /&gt;
      if (descriptionTriple==null)&lt;br /&gt;
        descriptionTriple=query.selectSingle(pageid,&amp;quot;Property:CANInfo_description&amp;quot;,null);&lt;br /&gt;
      if (descriptionTriple!=null) &lt;br /&gt;
        description=descriptionTriple.getObject().toString();&lt;br /&gt;
      Triple unitTriple=query.selectSingle(pageid,&amp;quot;unit&amp;quot;,null);&lt;br /&gt;
      if (unitTriple==null)&lt;br /&gt;
        unitTriple=query.selectSingle(pageid,&amp;quot;Property:CANInfo_unit&amp;quot;,null);&lt;br /&gt;
      if (unitTriple!=null) &lt;br /&gt;
        unit=unitTriple.getObject().toString();&lt;br /&gt;
      Triple pidTriple=query.selectSingle(pageid,&amp;quot;pid&amp;quot;,null);&lt;br /&gt;
      if (pidTriple==null)&lt;br /&gt;
        pidTriple=query.selectSingle(pageid,&amp;quot;Property:CANInfo_pid&amp;quot;,null);&lt;br /&gt;
      if (pidTriple!=null) &lt;br /&gt;
        pid=pidTriple.getObject().toString();&lt;br /&gt;
      init(query);&lt;br /&gt;
    } // constructor for CANInfo&lt;br /&gt;
    &lt;br /&gt;
    // &amp;gt;&amp;gt;&amp;gt;{user defined topic code}{CANInfo}{CANInfo}&lt;br /&gt;
    // &amp;lt;&amp;lt;&amp;lt;{user defined topic code}{CANInfo}{CANInfo}&lt;br /&gt;
  } // class CANInfo&lt;br /&gt;
  /**&lt;br /&gt;
   * Manager for CANInfo&lt;br /&gt;
   */&lt;br /&gt;
  public static class CANInfoManager extends TopicBase {&lt;br /&gt;
 &lt;br /&gt;
    public String topicName=&amp;quot;CANInfo&amp;quot;;&lt;br /&gt;
    public transient List&amp;lt;CANInfo&amp;gt; mCANInfos=new ArrayList&amp;lt;CANInfo&amp;gt;();&lt;br /&gt;
    public transient Map&amp;lt;String,CANInfo&amp;gt; mCANInfoMap=new LinkedHashMap&amp;lt;String,CANInfo&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * get my CANInfos&lt;br /&gt;
     */&lt;br /&gt;
    public List&amp;lt;CANInfo&amp;gt; getCANInfos() {&lt;br /&gt;
      List&amp;lt;CANInfo&amp;gt; result=this.mCANInfos;&lt;br /&gt;
      return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     *  add a new CANInfo &lt;br /&gt;
     */&lt;br /&gt;
    public CANInfo add(CANInfo pCANInfo) {&lt;br /&gt;
      mCANInfos.add(pCANInfo);&lt;br /&gt;
      mCANInfoMap.put(pCANInfo.getPageid(),pCANInfo);&lt;br /&gt;
      return pCANInfo;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     *  add a new CANInfo from the given triple&lt;br /&gt;
     */&lt;br /&gt;
    public CANInfo add(TripleQuery query,Triple pCANInfoTriple) {&lt;br /&gt;
      CANInfo lCANInfo=new CANInfo(query,pCANInfoTriple);&lt;br /&gt;
      add(lCANInfo);&lt;br /&gt;
      return lCANInfo;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // reinitialize my mCANInfo map&lt;br /&gt;
    public void reinit() {&lt;br /&gt;
      mCANInfoMap.clear();&lt;br /&gt;
      for (CANInfo lCANInfo:mCANInfos) {&lt;br /&gt;
        mCANInfoMap.put(lCANInfo.getPageid(),lCANInfo);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // convert this manager to json format &lt;br /&gt;
    public String toJson() { return JSON.toJSONString(this); }&lt;br /&gt;
    &lt;br /&gt;
    // get a new manager from the given json string&lt;br /&gt;
    public static CANInfoManager fromJson(String json) {&lt;br /&gt;
      CANInfoManager result=JSON.parseObject(json, CANInfoManager.class);&lt;br /&gt;
      result.reinit();&lt;br /&gt;
      return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // default constructor for CANInfo Manager&lt;br /&gt;
    public CANInfoManager() {}&lt;br /&gt;
&lt;br /&gt;
    // add CANInfos from the given query&lt;br /&gt;
    public void addCANInfos(TripleQuery pCANInfoQuery,TripleQuery query) {&lt;br /&gt;
      if (pCANInfoQuery!=null) {&lt;br /&gt;
        for (Triple lCANInfoTriple:pCANInfoQuery.getTriples()) {&lt;br /&gt;
          add(query,lCANInfoTriple);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // construct me from the given triple Query query&lt;br /&gt;
    public CANInfoManager(TripleQuery query) {&lt;br /&gt;
      // first query the SiDIF bases triplestore&lt;br /&gt;
      TripleQuery lCANInfoQuery=query.query(null,&amp;quot;isA&amp;quot;,&amp;quot;CANInfo&amp;quot;);&lt;br /&gt;
      addCANInfos(lCANInfoQuery,query);&lt;br /&gt;
      // then the SMW triplestore&lt;br /&gt;
      lCANInfoQuery=query.query(null,&amp;quot;Property:IsA&amp;quot;,&amp;quot;CANInfo&amp;quot;);&lt;br /&gt;
      addCANInfos(lCANInfoQuery,query);&lt;br /&gt;
      init(query);&lt;br /&gt;
    } // constructor for CANInfo Manager&lt;br /&gt;
    &lt;br /&gt;
    // &amp;gt;&amp;gt;&amp;gt;{user defined topicmanager code}{CANInfo}{CANInfo}&lt;br /&gt;
    // &amp;lt;&amp;lt;&amp;lt;{user defined topicmanager code}{CANInfo}{CANInfo}&lt;br /&gt;
  } // class CANInfo Manager&lt;br /&gt;
 /**&lt;br /&gt;
  * PID&lt;br /&gt;
  * OBD-II Diagnostic Parameter&lt;br /&gt;
  */&lt;br /&gt;
  public static class PID extends TopicBase {&lt;br /&gt;
  &lt;br /&gt;
    public String id;&lt;br /&gt;
    public String name;&lt;br /&gt;
    public String description;&lt;br /&gt;
    public String links;&lt;br /&gt;
    public String examples;&lt;br /&gt;
    public String frequency;&lt;br /&gt;
&lt;br /&gt;
    public String getId() { return id; }&lt;br /&gt;
    public void setId(String pId) { id=pId; }&lt;br /&gt;
    public String getName() { return name; }&lt;br /&gt;
    public void setName(String pName) { name=pName; }&lt;br /&gt;
    public String getDescription() { return description; }&lt;br /&gt;
    public void setDescription(String pDescription) { description=pDescription; }&lt;br /&gt;
    public String getLinks() { return links; }&lt;br /&gt;
    public void setLinks(String pLinks) { links=pLinks; }&lt;br /&gt;
    public String getExamples() { return examples; }&lt;br /&gt;
    public void setExamples(String pExamples) { examples=pExamples; }&lt;br /&gt;
    public String getFrequency() { return frequency; }&lt;br /&gt;
    public void setFrequency(String pFrequency) { frequency=pFrequency; }&lt;br /&gt;
    /**&lt;br /&gt;
     * convert this PID to a JSON string&lt;br /&gt;
     */&lt;br /&gt;
    public String toJson() { return JSON.toJSONString(this); }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * convert this PID to a WikiSon string&lt;br /&gt;
     */&lt;br /&gt;
    public String toWikiSon() {&lt;br /&gt;
      String wikison= &amp;quot;{{PID\n&amp;quot;;&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;id&amp;quot;,id);&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;name&amp;quot;,name);&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;description&amp;quot;,description);&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;links&amp;quot;,links);&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;examples&amp;quot;,examples);&lt;br /&gt;
      wikison+=toWikiSon(&amp;quot;frequency&amp;quot;,frequency);&lt;br /&gt;
      wikison+=&amp;quot;}}\n&amp;quot;;&lt;br /&gt;
      return wikison;&lt;br /&gt;
    }&lt;br /&gt;
 &lt;br /&gt;
    /**  &lt;br /&gt;
     * get the pageid for this topic&lt;br /&gt;
     */&lt;br /&gt;
    public String getPageid() { return pageid; };&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * default constructor for PID&lt;br /&gt;
     */&lt;br /&gt;
    public PID() {}&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * construct a PID from the given Triple&lt;br /&gt;
     * @param query - the TripleQuery to get the triples from&lt;br /&gt;
     * @param pPIDTriple - the triple to construct me from&lt;br /&gt;
     */&lt;br /&gt;
    public PID(TripleQuery query,Triple pPIDTriple) {&lt;br /&gt;
      this(query,pPIDTriple.getSubject().toString());&lt;br /&gt;
    } // constructor&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * construct a PID from the given pageId&lt;br /&gt;
     * @param query - the TripleQuery to get the triples from&lt;br /&gt;
     * @param pageid - pageid&lt;br /&gt;
     */&lt;br /&gt;
    public PID(TripleQuery query,String pageid) {&lt;br /&gt;
      this.pageid=pageid;&lt;br /&gt;
      Triple idTriple=query.selectSingle(pageid,&amp;quot;id&amp;quot;,null);&lt;br /&gt;
      if (idTriple==null)&lt;br /&gt;
        idTriple=query.selectSingle(pageid,&amp;quot;Property:PID_id&amp;quot;,null);&lt;br /&gt;
      if (idTriple!=null) &lt;br /&gt;
        id=idTriple.getObject().toString();&lt;br /&gt;
      Triple nameTriple=query.selectSingle(pageid,&amp;quot;name&amp;quot;,null);&lt;br /&gt;
      if (nameTriple==null)&lt;br /&gt;
        nameTriple=query.selectSingle(pageid,&amp;quot;Property:PID_name&amp;quot;,null);&lt;br /&gt;
      if (nameTriple!=null) &lt;br /&gt;
        name=nameTriple.getObject().toString();&lt;br /&gt;
      Triple descriptionTriple=query.selectSingle(pageid,&amp;quot;description&amp;quot;,null);&lt;br /&gt;
      if (descriptionTriple==null)&lt;br /&gt;
        descriptionTriple=query.selectSingle(pageid,&amp;quot;Property:PID_description&amp;quot;,null);&lt;br /&gt;
      if (descriptionTriple!=null) &lt;br /&gt;
        description=descriptionTriple.getObject().toString();&lt;br /&gt;
      Triple linksTriple=query.selectSingle(pageid,&amp;quot;links&amp;quot;,null);&lt;br /&gt;
      if (linksTriple==null)&lt;br /&gt;
        linksTriple=query.selectSingle(pageid,&amp;quot;Property:PID_links&amp;quot;,null);&lt;br /&gt;
      if (linksTriple!=null) &lt;br /&gt;
        links=linksTriple.getObject().toString();&lt;br /&gt;
      Triple examplesTriple=query.selectSingle(pageid,&amp;quot;examples&amp;quot;,null);&lt;br /&gt;
      if (examplesTriple==null)&lt;br /&gt;
        examplesTriple=query.selectSingle(pageid,&amp;quot;Property:PID_examples&amp;quot;,null);&lt;br /&gt;
      if (examplesTriple!=null) &lt;br /&gt;
        examples=examplesTriple.getObject().toString();&lt;br /&gt;
      Triple frequencyTriple=query.selectSingle(pageid,&amp;quot;frequency&amp;quot;,null);&lt;br /&gt;
      if (frequencyTriple==null)&lt;br /&gt;
        frequencyTriple=query.selectSingle(pageid,&amp;quot;Property:PID_frequency&amp;quot;,null);&lt;br /&gt;
      if (frequencyTriple!=null) &lt;br /&gt;
        frequency=frequencyTriple.getObject().toString();&lt;br /&gt;
      init(query);&lt;br /&gt;
    } // constructor for PID&lt;br /&gt;
    &lt;br /&gt;
    // &amp;gt;&amp;gt;&amp;gt;{user defined topic code}{PID}{PID}&lt;br /&gt;
    // &amp;lt;&amp;lt;&amp;lt;{user defined topic code}{PID}{PID}&lt;br /&gt;
  } // class PID&lt;br /&gt;
  /**&lt;br /&gt;
   * Manager for PID&lt;br /&gt;
   */&lt;br /&gt;
  public static class PIDManager extends TopicBase {&lt;br /&gt;
 &lt;br /&gt;
    public String topicName=&amp;quot;PID&amp;quot;;&lt;br /&gt;
    public transient List&amp;lt;PID&amp;gt; mPIDs=new ArrayList&amp;lt;PID&amp;gt;();&lt;br /&gt;
    public transient Map&amp;lt;String,PID&amp;gt; mPIDMap=new LinkedHashMap&amp;lt;String,PID&amp;gt;();&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     * get my PIDs&lt;br /&gt;
     */&lt;br /&gt;
    public List&amp;lt;PID&amp;gt; getPIDs() {&lt;br /&gt;
      List&amp;lt;PID&amp;gt; result=this.mPIDs;&lt;br /&gt;
      return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     *  add a new PID &lt;br /&gt;
     */&lt;br /&gt;
    public PID add(PID pPID) {&lt;br /&gt;
      mPIDs.add(pPID);&lt;br /&gt;
      mPIDMap.put(pPID.getPageid(),pPID);&lt;br /&gt;
      return pPID;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    /**&lt;br /&gt;
     *  add a new PID from the given triple&lt;br /&gt;
     */&lt;br /&gt;
    public PID add(TripleQuery query,Triple pPIDTriple) {&lt;br /&gt;
      PID lPID=new PID(query,pPIDTriple);&lt;br /&gt;
      add(lPID);&lt;br /&gt;
      return lPID;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // reinitialize my mPID map&lt;br /&gt;
    public void reinit() {&lt;br /&gt;
      mPIDMap.clear();&lt;br /&gt;
      for (PID lPID:mPIDs) {&lt;br /&gt;
        mPIDMap.put(lPID.getPageid(),lPID);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // convert this manager to json format &lt;br /&gt;
    public String toJson() { return JSON.toJSONString(this); }&lt;br /&gt;
    &lt;br /&gt;
    // get a new manager from the given json string&lt;br /&gt;
    public static PIDManager fromJson(String json) {&lt;br /&gt;
      PIDManager result=JSON.parseObject(json, PIDManager.class);&lt;br /&gt;
      result.reinit();&lt;br /&gt;
      return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // default constructor for PID Manager&lt;br /&gt;
    public PIDManager() {}&lt;br /&gt;
&lt;br /&gt;
    // add PIDs from the given query&lt;br /&gt;
    public void addPIDs(TripleQuery pPIDQuery,TripleQuery query) {&lt;br /&gt;
      if (pPIDQuery!=null) {&lt;br /&gt;
        for (Triple lPIDTriple:pPIDQuery.getTriples()) {&lt;br /&gt;
          add(query,lPIDTriple);&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // construct me from the given triple Query query&lt;br /&gt;
    public PIDManager(TripleQuery query) {&lt;br /&gt;
      // first query the SiDIF bases triplestore&lt;br /&gt;
      TripleQuery lPIDQuery=query.query(null,&amp;quot;isA&amp;quot;,&amp;quot;PID&amp;quot;);&lt;br /&gt;
      addPIDs(lPIDQuery,query);&lt;br /&gt;
      // then the SMW triplestore&lt;br /&gt;
      lPIDQuery=query.query(null,&amp;quot;Property:IsA&amp;quot;,&amp;quot;PID&amp;quot;);&lt;br /&gt;
      addPIDs(lPIDQuery,query);&lt;br /&gt;
      init(query);&lt;br /&gt;
    } // constructor for PID Manager&lt;br /&gt;
    &lt;br /&gt;
    // &amp;gt;&amp;gt;&amp;gt;{user defined topicmanager code}{PID}{PID}&lt;br /&gt;
    // &amp;lt;&amp;lt;&amp;lt;{user defined topicmanager code}{PID}{PID}&lt;br /&gt;
  } // class PID Manager&lt;br /&gt;
&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Wf</name></author>
	</entry>
</feed>