Concept:Design3D/Java

From BITPlan Wiki
Jump to navigation Jump to search

java code

@// This is a rythm template
@// the args are the standard wikiTask arguments
@import org.sidif.triple.TripleQuery
@import org.sidif.triple.Triple
@import com.alibaba.fastjson.JSON
@args() {
  String title 
  String logo
  org.sidif.wiki.WikiTask wikiTask
  org.sidif.triple.TripleStore tripleStore
}


@def static {

  /**
   * Base class
   */
  static abstract class TopicBase {
    // each Topic has a pageid - for non subobject thats the pagename
    public String pageid;

    /**
     * get a WikiSon version of the given name value
     * 
     * @param name
     * @param value
     * @return - the string representation
     */
    public String toWikiSon(String name, String value) {
      String result = "<!-- " + name + " is null-->\n";
      if (value != null)
        result = "|" + name + "=" + value + "\n";
      return result;
    }

    /**
     * get the SiDIF representation of the given property
     * 
     * @param name - the name of the property
     * @param value - the value of the property
     * @param type - the type of the property
     * @return - the SiDIF Sting representation of the property
     */
    public static String propertySiDIF(String name, String value, String type) {
      // default is a comment line which can be filled by uncommenting
      String result = String.format("# is is %s of it\n",name);;
      // if the value is not empty
      if ((value != null) && (!("".equals(value.trim())))) {
        // do we need to quote the result?
        String quote = "";
        // this depends on the Type
        if ("Text".equals(type)) {
          quote = "\"";
        }
        // create a SIDIF Property line like
        // "John" is lastname of it
        // convert double quotes to single quotes - FIXME - should we escape instead?
        value=value.replace("\"","'");
        result = String.format("%s%s%s is %s of it\n",quote,value,quote,name);
      }
      // return the SiDIF property line
      return result;
    }

    /**
     * get me as a String
     * 
     * @param name
     * @param value
     * @return
     */
    public static String propertySiDIF(String name, String value) {
      String result = propertySiDIF(name, value, "Text");
      return result;
    }

    /**
     * check if the given boolean String value is true
     * 
     * @param value
     * @return true if the value is not null and has true/TRUE as it's string
     *         content
     */
    public boolean isTrue(String value) {
      boolean result = false;
      if (value != null && value.toLowerCase().equals("true")) {
        result = true;
      }
      return result;
    }

    /**
     * initialize
     */
    public void init(TripleQuery query) {
    }
  } // TopicBase
 /**
  * Design3D
  * A 3D Design
  */
  public static class Design3D extends TopicBase {
  
    public String name;
    public String date;
    public String idea;
    public String design;
    public String result;
    public String blockscad;
    public String stl;

    public String getName() { return name; }
    public void setName(String pName) { name=pName; }
    public String getDate() { return date; }
    public void setDate(String pDate) { date=pDate; }
    public String getIdea() { return idea; }
    public void setIdea(String pIdea) { idea=pIdea; }
    public String getDesign() { return design; }
    public void setDesign(String pDesign) { design=pDesign; }
    public String getResult() { return result; }
    public void setResult(String pResult) { result=pResult; }
    public String getBlockscad() { return blockscad; }
    public void setBlockscad(String pBlockscad) { blockscad=pBlockscad; }
    public String getStl() { return stl; }
    public void setStl(String pStl) { stl=pStl; }
    /**
     * convert this Design3D to a JSON string
     */
    public String toJson() { return JSON.toJSONString(this); }

    /**
     * convert this Design3D to a WikiSon string
     * @return the WikiSon representation of this Design3D
     */
    public String toWikiSon() {
      String wikison= "{{Design3D\n";
      wikison+=toWikiSon("name",name);
      wikison+=toWikiSon("date",date);
      wikison+=toWikiSon("idea",idea);
      wikison+=toWikiSon("design",design);
      wikison+=toWikiSon("result",result);
      wikison+=toWikiSon("blockscad",blockscad);
      wikison+=toWikiSon("stl",stl);
      wikison+="}}\n";
      return wikison;
    }

    /**
     * convert this Design3D to a SiDIF string
     * @return the SiDIF representation of this Design3D
     */
    public String toSiDIF() {
      String siDIF = String.format("%s isA Design3D\n",this.pageid);
      siDIF+=propertySiDIF("name",name,"Text");
      siDIF+=propertySiDIF("date",date,"Date");
      siDIF+=propertySiDIF("idea",idea,"Text");
      siDIF+=propertySiDIF("design",design,"Text");
      siDIF+=propertySiDIF("result",result,"Text");
      siDIF+=propertySiDIF("blockscad",blockscad,"Page");
      siDIF+=propertySiDIF("stl",stl,"Page");
      return siDIF;
    }
 
    /**  
     * get the pageid for this topic
     */
    public String getPageid() { return pageid; };

    /**
     * default constructor for Design3D
     */
    public Design3D() {}

    /**
     * construct a Design3D from the given Triple
     * @param query - the TripleQuery to get the triples from
     * @param pDesign3DTriple - the triple to construct me from
     */
    public Design3D(TripleQuery query,Triple pDesign3DTriple) {
      this(query,pDesign3DTriple.getSubject().toString());
    } // constructor

    /**
     * construct a Design3D from the given pageId
     * @param query - the TripleQuery to get the triples from
     * @param pageid - pageid
     */
    public Design3D(TripleQuery query,String pageid) {
      this.pageid=pageid;
      Triple nameTriple=query.selectSingle(pageid,"name",null);
      if (nameTriple==null)
        nameTriple=query.selectSingle(pageid,"Property:Design3D_name",null);
      if (nameTriple!=null) 
        name=nameTriple.getObject().toString();
      Triple dateTriple=query.selectSingle(pageid,"date",null);
      if (dateTriple==null)
        dateTriple=query.selectSingle(pageid,"Property:Design3D_date",null);
      if (dateTriple!=null) 
        date=dateTriple.getObject().toString();
      Triple ideaTriple=query.selectSingle(pageid,"idea",null);
      if (ideaTriple==null)
        ideaTriple=query.selectSingle(pageid,"Property:Design3D_idea",null);
      if (ideaTriple!=null) 
        idea=ideaTriple.getObject().toString();
      Triple designTriple=query.selectSingle(pageid,"design",null);
      if (designTriple==null)
        designTriple=query.selectSingle(pageid,"Property:Design3D_design",null);
      if (designTriple!=null) 
        design=designTriple.getObject().toString();
      Triple resultTriple=query.selectSingle(pageid,"result",null);
      if (resultTriple==null)
        resultTriple=query.selectSingle(pageid,"Property:Design3D_result",null);
      if (resultTriple!=null) 
        result=resultTriple.getObject().toString();
      Triple blockscadTriple=query.selectSingle(pageid,"blockscad",null);
      if (blockscadTriple==null)
        blockscadTriple=query.selectSingle(pageid,"Property:Design3D_blockscad",null);
      if (blockscadTriple!=null) 
        blockscad=blockscadTriple.getObject().toString();
      Triple stlTriple=query.selectSingle(pageid,"stl",null);
      if (stlTriple==null)
        stlTriple=query.selectSingle(pageid,"Property:Design3D_stl",null);
      if (stlTriple!=null) 
        stl=stlTriple.getObject().toString();
      init(query);
    } // constructor for Design3D
    
    // >>>{user defined topic code}{Design3D}{Design3D}
    // <<<{user defined topic code}{Design3D}{Design3D}
  } // class Design3D
  /**
   * Manager for Design3D
   */
  public static class Design3DManager extends TopicBase {
 
    public String topicName="Design3D";
    public transient List<Design3D> mDesign3Ds=new ArrayList<Design3D>();
    public transient Map<String,Design3D> mDesign3DMap=new LinkedHashMap<String,Design3D>();

    /**
     * get my Design3Ds
     */
    public List<Design3D> getDesign3Ds() {
      List<Design3D> result=this.mDesign3Ds;
      return result;
    }

    /**
     *  add a new Design3D 
     */
    public Design3D add(Design3D pDesign3D) {
      mDesign3Ds.add(pDesign3D);
      mDesign3DMap.put(pDesign3D.getPageid(),pDesign3D);
      return pDesign3D;
    }

    /**
     *  add a new Design3D from the given triple
     */
    public Design3D add(TripleQuery query,Triple pDesign3DTriple) {
      Design3D lDesign3D=new Design3D(query,pDesign3DTriple);
      add(lDesign3D);
      return lDesign3D;
    }

    // reinitialize my mDesign3D map
    public void reinit() {
      mDesign3DMap.clear();
      for (Design3D lDesign3D:mDesign3Ds) {
        mDesign3DMap.put(lDesign3D.getPageid(),lDesign3D);
      }
    }

    // convert this manager to json format 
    public String toJson() { return JSON.toJSONString(this); }
    
    // get a new manager from the given json string
    public static Design3DManager fromJson(String json) {
      Design3DManager result=JSON.parseObject(json, Design3DManager.class);
      result.reinit();
      return result;
    }

    // default constructor for Design3D Manager
    public Design3DManager() {}

    // add Design3Ds from the given query
    public void addDesign3Ds(TripleQuery pDesign3DQuery,TripleQuery query) {
      if (pDesign3DQuery!=null) {
        for (Triple lDesign3DTriple:pDesign3DQuery.getTriples()) {
          add(query,lDesign3DTriple);
        }
      }
    }

    // construct me from the given triple Query query
    public Design3DManager(TripleQuery query) {
      // first query the SiDIF bases triplestore
      TripleQuery lDesign3DQuery=query.query(null,"isA","Design3D");
      addDesign3Ds(lDesign3DQuery,query);
      // then the SMW triplestore
      lDesign3DQuery=query.query(null,"Property:IsA","Design3D");
      addDesign3Ds(lDesign3DQuery,query);
      init(query);
    } // constructor for Design3D Manager
    
    // >>>{user defined topicmanager code}{Design3D}{Design3D}
    // <<<{user defined topicmanager code}{Design3D}{Design3D}
  } // class Design3D Manager

}
Showing below 0 pages.

Retrieved from "https://wiki.bitplan.com/index.php?title=Concept:Design3D/Java&oldid=8396#smw-result"