/* * Metadata.java * * Created on 2. toukokuuta 2003, 11:09 * Modified: * 20.5.2003: - Saving using db that is brought from outside */ package kottarainenbeans; import java.beans.*; import kotkabeans.*; import java.sql.*; import java.util.*; /** * * @author tmpoyhon */ public class Metadata extends Object implements java.io.Serializable { private TemplateHandler TH; /** Holds value of property JSPvid. */ private String JSPvid; /** Holds value of property deleted. */ private boolean deleted; /** Holds value of property parentid. */ private int parentid; /** Holds value of property parametertypeid. */ private int parametertypeid; /** Holds value of property type. */ private String type; /** Holds value of property value. */ private String value; /** Holds value of property permanent. */ private boolean permanent; /** Holds value of property modified. */ private boolean modified; /** Holds value of property templatePath. */ private String templatePath; /** Holds value of property parameterTypeName. */ private String parameterTypeName; public Metadata(String iJSPvid,String templatePath){ setTemplatePath(templatePath); setTH(getTemplatePath()); setJSPvid(iJSPvid); setDeleted(false); setParentid(0); setParametertypeid(0); setType(createType(iJSPvid)); setModified(false); setPermanent(false); setValue(""); setParameterTypeName(""); } /* Function creates metadata's type from JSPvid * For eaxample "questionnaire_meta_1" -> "questionnaire" */ private String createType(String JSPvid){ int index=JSPvid.indexOf("_"); if( index!=-1) { return JSPvid.substring(0,index); } return JSPvid; } public void setTH(String templatePath) { this.TH = new TemplateHandler(templatePath+"/Metadata.sqlt"); } /** Getter for property JSPvid. * @return Value of property JSPvid. * */ public String getJSPvid() { return this.JSPvid; } /** Setter for property JSPvid. * @param JSPvid New value of property JSPvid. * */ public void setJSPvid(String JSPvid) { this.JSPvid = JSPvid; } /** Getter for property deleted. * @return Value of property deleted. * */ public boolean isDeleted() { return this.deleted; } /** Setter for property deleted. * @param deleted New value of property deleted. * */ public void setDeleted(boolean deleted) { setModified(true); this.deleted = deleted; } /** Getter for property parentid. * @return Value of property parentid. * */ public int getParentid() { return this.parentid; } /** Setter for property parentid. * @param parentid New value of property parentid. * */ public void setParentid(int parentid) { setModified(true); this.parentid = parentid; } /** Getter for property parametertypeid. * @return Value of property parametertypeid. * */ public int getParametertypeid() { return this.parametertypeid; } /** Setter for property parametertypeid. * @param parametertypeid New value of property parametertypeid. * */ public void setParametertypeid(int parametertypeid) { setModified(true); this.parametertypeid = parametertypeid; } /** Getter for property type. * @return Value of property type. * */ public String getType() { return this.type; } /** Setter for property type. * @param type New value of property type. * */ public void setType(String type) { setModified(true); this.type = type; } /** Getter for property value. * @return Value of property value. * */ public String getValue() { return this.value; } /** Setter for property value. * @param value New value of property value. * */ public void setValue(String value) { setModified(true); this.value = value; } /** Getter for property permanent. * @return Value of property permanent. * */ public boolean isPermanent() { return this.permanent; } /** Setter for property permanent. * @param permanent New value of property permanent. * */ public void setPermanent(boolean permanent) { this.permanent = permanent; } /** Getter for property modified. * @return Value of property modified. * */ public boolean isModified() { return this.modified; } /** Setter for property modified. * @param modified New value of property modified. * */ public void setModified(boolean modified) { this.modified = modified; } /** Getter for property templatePath. * @return Value of property templatePath. * */ public String getTemplatePath() { return this.templatePath; } /** Setter for property templatePath. * @param templatePath New value of property templatePath. * */ public void setTemplatePath(String templatePath) { this.templatePath = templatePath; } /** Takes metadata with parentid as "parentId" and parametertypeid as * "parametertypeId" out of database * @param */ public String getValuesFromDb(int parentId, int parametertypeId, DB db){ try { RS2 rs; Properties macroTable = new Properties(); setParentid(parentId); setParametertypeid(parametertypeId); //creates the name of the table where the query is made String type_parameter=getType()+"_parameter"; String typeid=getType()+"id"; macroTable.setProperty("parentId", String.valueOf(getParentid())); macroTable.setProperty("parametertypeId", String.valueOf(getParametertypeid())); macroTable.setProperty("type_parameter",type_parameter); macroTable.setProperty("typeId",typeid); String SQLsentence = TH.CompleteTemplate("get_metadata",macroTable); rs = DBhandler.bringFromDatabase(db, "MetadataFrDb", SQLsentence,"getMetadata"); if(rs.next()){ setValue(rs.getString("value")); setModified(false); setPermanent(true); SQLsentence = TH.CompleteTemplate("get_parametertypename",macroTable); rs = DBhandler.bringFromDatabase(db, "ParametertypenameFrDb", SQLsentence,"getParametertypeName"); if(rs.next()){ setParameterTypeName(rs.getString("name")); } } } catch (Exception e){ System.out.println(e.getMessage()); return "Got Exception from reading metadata from db."; } return "Reading metadata from db succeeded."; } /** This saves the metadata to db. * If modified is true then saves to db. Else does nothing.. */ public void saveToDatabase(DB db) { saveToDatabase(getParentid(), db); } public void saveToDatabase(int parentid, DB db) { //if nothing has changed, question doesn't need to be saved to db setParentid(parentid); if(!isModified()) { return; } RS2 rs; String sqlInfo = ""; String logInfo = ""; String SQLsentence = ""; String type_parameter=getType()+"_parameter"; String typeid=getType()+"id"; Properties macroTable = new Properties(); macroTable.setProperty("deleted",String.valueOf(isDeleted())); macroTable.setProperty("value",getValue()); macroTable.setProperty("parentId",String.valueOf(getParentid())); macroTable.setProperty("parametertypeId", String.valueOf(getParametertypeid())); macroTable.setProperty("type_parameter",type_parameter); macroTable.setProperty("typeId",typeid); /*this part inserts new question into db..*/ if (isPermanent()==false) { logInfo= "insertMetadata"; SQLsentence=TH.CompleteTemplate("insert_metadata",macroTable); sqlInfo="Inserts metadata to Database"; } else { SQLsentence = TH.CompleteTemplate("update_metadata",macroTable); sqlInfo = "metadata-update"; logInfo = "Updates matadata's information to the db"; } try { int error = DBhandler.insertIntoDatabase(db,logInfo, SQLsentence,sqlInfo); } catch (Exception e) { } setModified(false); // when inserted into database modified=false.. setPermanent(true); } /** Takes values from Properties-table and sets them to class's attributes * */ public void update(Properties commonVars){ setValue(commonVars.getProperty(JSPvid+"_value",getValue())); try { setParentid(Integer.parseInt(commonVars.getProperty(JSPvid+ "_parentid",String.valueOf(getParentid())))); } catch (NumberFormatException e) {} try { setParametertypeid(Integer.parseInt(commonVars.getProperty(JSPvid+ "_parametertypeid",String.valueOf(getParametertypeid())))); } catch (NumberFormatException e) {} if (commonVars.getProperty(JSPvid+"_deleted","").equals("TRUE")) setDeleted(true); else if (commonVars.getProperty(JSPvid+"_deleted","").equals("FALSE")) setDeleted(false); } /** Returns attribute-values in variableTable * */ public Properties getValues(Properties variableTable) { variableTable.setProperty(JSPvid+"_parametertypeid", Integer.toString(getParametertypeid())); variableTable.setProperty(JSPvid+"_parentid", Integer.toString(getParentid())); variableTable.setProperty(JSPvid+"_deleted", String.valueOf(isDeleted())); variableTable.setProperty(JSPvid+"_value",getValue()); return variableTable; } /** Getter for property parameterTypeName. * @return Value of property parameterTypeName. * */ public String getParameterTypeName() { return this.parameterTypeName; } /** Setter for property parameterTypeName. * @param parameterTypeName New value of property parameterTypeName. * */ public void setParameterTypeName(String parameterTypeName) { this.parameterTypeName = parameterTypeName; } }