/* * HtmlQuestionnaire.java * * Created on 2. toukokuuta 2003, 9:46 */ package kottarainenbeans; import java.beans.*; import kotkabeans.*; import kiurubeans.HtmlBean; import kottarainenbeans.*; import java.sql.*; import java.util.*; import javax.servlet.http.*; /** * * @author sampsa */ public class HtmlQuestionnaire extends Questionnaire implements java.io.Serializable { private String htmtTemplatePath; private TemplateHandler htmlTH; private String printType; public HtmlQuestionnaire() { super(); this.setLabel("Kysely"); } public HtmlQuestionnaire(String JSPvid, String templatePath, String htmlTemplatePath) { super(JSPvid,templatePath); setHtmtTemplatePath(htmlTemplatePath); setHtmlTH(); } public String getHtmtTemplatePath() { return this.htmtTemplatePath; } public void setHtmtTemplatePath(String htmtTemplatePath) { this.htmtTemplatePath = htmtTemplatePath; } public void setHtmlTH() { this.htmlTH = new TemplateHandler(getHtmtTemplatePath()+"/Questionnaire.htmt"); } public String getPrintType() { return this.printType; } public void setPrintType(String printType) { this.printType = printType; } public String getEditMetaHtml(){ Properties varTable=new Properties(); Enumeration en = getMetaElements().elements(); String html=""; while(en.hasMoreElements()) { Metadata meta=(Metadata)en.nextElement(); varTable.setProperty("parametertypename",meta.getParameterTypeName()); varTable.setProperty("value",meta.getValue()); varTable.setProperty("metaJSPvid",meta.getJSPvid()); html = html + htmlTH.CompleteTemplate("metadata",varTable); } return html; } /** returns html code that is build. opens also db-connection * */ public String getHtml() { DB db=new DB("Haetaan metatietolistat"); String get=""; try { db.connect(); get=getHtml(db); } finally { db.disconnect(); return get; } } public String getHtml(DB db) { Properties variableTable = getHtmlValues(db); if (getPrintType().equals("edit")) { variableTable.setProperty("metadatas", getEditMetaHtml()); String testi = htmlTH.CompleteTemplate("edit_questionnaire",variableTable); return testi; } else if (getPrintType().equals("tree")) { return htmlTH.CompleteTemplate("tree_questionnaire",variableTable); } else if (getPrintType().equals("subelements")) { return getSubElementsHtml(db); } else if (getPrintType().equals("for_answering")) { //added by Timo String html = htmlTH.CompleteTemplate(""+ "for_answering_questionnaire", variableTable); setPrintTypeForSubElements("for_answering"); html = html + getSubElementsHtml(db); return html; } else { return ""; } } // This method sets all subElement's printType to prnType private void setPrintTypeForSubElements(String prnType) { Enumeration en = subElements.elements(); while(en.hasMoreElements()){ HtmlQuestiongroup subElement=(HtmlQuestiongroup)en.nextElement(); if (subElement.isPointerDeleted() == false) subElement.setPrintType(prnType); } } private String getSubElementsHtml(DB db) { Enumeration en = subElements.elements(); String print=""; while(en.hasMoreElements()){ HtmlQuestiongroup subElement=(HtmlQuestiongroup)en.nextElement(); if (subElement.isPointerDeleted() == false) print = print + subElement.getHtml(db); } return print; } public Properties getHtmlValues(DB db) { Properties variableTable = new Properties(); try { variableTable.setProperty("label",this.getLabel()); variableTable.setProperty("uri",this.getUri()); variableTable.setProperty("bankgroupid", Integer.toString(getBankgroupid())); variableTable.setProperty("bankuserightid", Integer.toString(getBankuserightid())); variableTable.setProperty("personid",Integer.toString(getPersonid())); variableTable.setProperty("personname", getPersonName(db)); variableTable.setProperty("deleted", String.valueOf(isDeleted())); variableTable.setProperty("JSPvid", getJSPvid()); } catch (Exception e) { e.printStackTrace(); } variableTable = makeLists(variableTable, db); variableTable = makeSubElementLinks(variableTable); return variableTable; } private String getPersonName(DB db) { RS2 rs=null; String SQLsentence = "SELECT firstnames,lastname FROM person WHERE personid="+ getPersonid()+";"; if(getPersonid()==0) { return "Ei saatu nimeä"; } try { rs = DBhandler.bringFromDatabase(db,"PersonNameFrDb", SQLsentence,"getPersonName"); } catch (Exception e) {} String firstnames=""; String lastname=""; try { if (rs.next()){ firstnames=rs.getString("firstnames"); lastname=rs.getString("lastname"); } } catch (Exception e){} return lastname + ", " + firstnames; } //changed using external db private Properties makeLists(Properties variableTable, DB db) { RS2 rs; HtmlBean HB = new HtmlBean(); String SQLsentence = "SELECT * FROM questionbankgroup WHERE deleted='false'"; try { rs = DBhandler.bringFromDatabase(db,"QuestionnairesFrDb", SQLsentence,"HtmlQuestionnaire1"); String list = HB.makeSelectList(getJSPvid()+"_bankgroupid",rs, "bankgroupid","name",String.valueOf(getBankgroupid())); variableTable.setProperty("bankgrouplist",list); } catch (Exception e){} SQLsentence = "SELECT * FROM questionbankuseright WHERE deleted='false'"; try { rs = DBhandler.bringFromDatabase(db,"QuestionnairesFrDb", SQLsentence,"HtmlQuestionnaire2"); String list = HB.makeSelectList(getJSPvid()+"_bankuserightid",rs, "bankuserightid","name",String.valueOf(getBankuserightid())); variableTable.setProperty("bankuserightlist",list); } catch (Exception e){} SQLsentence = "SELECT * FROM questionparametertype WHERE deleted='false'"; return variableTable; } private Properties makeSubElementLinks(Properties variableTable) { Enumeration en = subElements.elements(); Properties macroTable = new Properties(); String questiongrouplinks=""; while(en.hasMoreElements()){ Questiongroup subElement=(Questiongroup)en.nextElement(); if (subElement.isPointerDeleted() == false) { String label = (!subElement.getLabel().equals("")) ? subElement.getLabel() : "Ei nimeä"; macroTable.setProperty("label",label); macroTable.setProperty("JSPvid",subElement.getJSPvid()); questiongrouplinks = questiongrouplinks + htmlTH.CompleteTemplate("link_questiongroup",macroTable); } } variableTable.setProperty("questiongrouplinks",questiongrouplinks); return variableTable; } public void addSubElements(int howmany) { int elements; for (int i=0;i