/*
* 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