* Obtain structure stylesheet description object for a given structure stylesheet id.
* @param stylesheetId the id of the structure stylesheet
* @return structure stylesheet description
*/
public StructureStylesheetDescription getStructureStylesheetDescription (int stylesheetId) throws Exception {
StructureStylesheetDescription ssd = null;
Connection con = null;
try {
con = RDBMServices.getConnection();
Statement stmt = con.createStatement();
int dbOffset = 0;
String sQuery = "SELECT SS_NAME,SS_URI,SS_DESCRIPTION_URI,SS_DESCRIPTION_TEXT";
if (RDBMServices.getDbMetaData().supportsOuterJoins()) {
sQuery += ",TYPE,PARAM_NAME,PARAM_DEFAULT_VAL,PARAM_DESCRIPT FROM " + RDBMServices.getDbMetaData().getJoinQuery().getQuery("ss_struct");
dbOffset = 4;
} else {
sQuery += " FROM UP_SS_STRUCT USS WHERE";
}
sQuery += " USS.SS_ID=" + stylesheetId;
if (log.isDebugEnabled())
log.debug("RDBMUserLayoutStore::getStructureStylesheetDescription(): " + sQuery);
ResultSet rs = stmt.executeQuery(sQuery);
try {
if (rs.next()) {
ssd = new StructureStylesheetDescription();
ssd.setId(stylesheetId);
ssd.setStylesheetName(rs.getString(1));
ssd.setStylesheetURI(rs.getString(2));
ssd.setStylesheetDescriptionURI(rs.getString(3));
ssd.setStylesheetWordDescription(rs.getString(4));
}
if (!RDBMServices.getDbMetaData().supportsOuterJoins()) {
rs.close();
// retrieve stylesheet params and attributes
sQuery = "SELECT TYPE,PARAM_NAME,PARAM_DEFAULT_VAL,PARAM_DESCRIPT FROM UP_SS_STRUCT_PAR WHERE SS_ID=" + stylesheetId;
if (log.isDebugEnabled())
log.debug("RDBMUserLayoutStore::getStructureStylesheetDescription(): " + sQuery);
rs = stmt.executeQuery(sQuery);
}
while (true) {
if (!RDBMServices.getDbMetaData().supportsOuterJoins() && !rs.next()) {
break;
}
int type = rs.getInt(dbOffset + 1);
if (rs.wasNull()){
break;
}
if (type == 1) {
// param
ssd.addStylesheetParameter(rs.getString(dbOffset + 2), rs.getString(dbOffset + 3), rs.getString(dbOffset + 4));
}
else if (type == 2) {
// folder attribute
ssd.addFolderAttribute(rs.getString(dbOffset + 2), rs.getString(dbOffset + 3), rs.getString(dbOffset + 4));
}
else if (type == 3) {
// channel attribute
ssd.addChannelAttribute(rs.getString(dbOffset + 2), rs.getString(dbOffset + 3), rs.getString(dbOffset + 4));
}
else {
if (log.isDebugEnabled())
log.debug("RDBMUserLayoutStore::getStructureStylesheetDescription() : encountered param of unknown type! (stylesheetId="
+ stylesheetId + " param_name=\"" + rs.getString(dbOffset + 2) + "\" type=" + type + ").");