Examples of JDCConnection


Examples of com.knowgate.jdc.JDCConnection

    }
    else {

      DBBind oDBB = (DBBind) getPortletContext().getAttribute("GlobalDBBind");

      JDCConnection oCon = null;

      try  {
        oCon = oDBB.getConnection("RecentPostsTab");

        DBSubset oPosts = Forums.getTopLevelMessages(oCon,iMaxRecent,sWorkAreaId,Boolean.TRUE, sOrderBy);
        iPosts = oPosts.getRowCount();

        oCon.close("RecentPostsTab");
        oCon = null;

        Date dtPub;
        int iDtPubColPos = oPosts.getColumnPosition(DB.dt_published);
        for (int p=0; p<iPosts; p++) {
          dtPub = oPosts.getDate(iDtPubColPos,p);
          oPosts.setElementAt(Gadgets.leftPad(String.valueOf(dtPub.getMonth()+1),'0',2)+"-"+Gadgets.leftPad(String.valueOf(dtPub.getDate()),'0',2)+" "+Gadgets.leftPad(String.valueOf(dtPub.getHours()),'0',2)+":"+Gadgets.leftPad(String.valueOf(dtPub.getMinutes()),'0',2), 5,p);
        }

        sXML += "<posts>\n"+oPosts.toXML("","newsmsg")+"</posts>";
      }
      catch (SQLException e) {
        sXML += "<posts/>";

        try {
          if (null != oCon)
            if (!oCon.isClosed())
              oCon.close("RecentPostsTab");
        } catch (SQLException ignore) { }
      }
    }

    try {
View Full Code Here

Examples of com.knowgate.jdc.JDCConnection

    if (null==oGlobalDbb)
      oDbb = new DBBind(sEnvCnfFileName);
    else
      oDbb = oGlobalDbb;
     
    JDCConnection oCon = null;
    try {

      Job oSnd;
      DBPersist oJob = new DBPersist(DB.k_jobs,"Job");
      oCon = oDbb.getConnection("SendMail",false);
      oCon.setAutoCommit(false);

      ACLUser oUsr = new ACLUser(oCon, oMacc.getString(DB.gu_user));

      String sJobId = Job.getIdFromTitle(oCon, sJobTl, oUsr.getString(DB.gu_workarea));

      if (null==sJobId) {
        if (DebugFile.trace) DebugFile.writeln("Job "+sJobTl+" not found, creating a new one...");
     
      if (oMacc.isNull(DB.gu_account)) {
        if (DebugFile.trace) DebugFile.decIdent();
          throw new SQLException("No MailAccount found for user "+oUsr.getString(DB.gu_user),"01S06");       
      }

        String sMBoxDir = DBStore.MBoxDirectory(oDbb.getProfileName(),oUsr.getInt(DB.id_domain),oUsr.getString(DB.gu_workarea));

        if (DebugFile.trace) DebugFile.writeln("mbox directory is "+sMBoxDir);

        SessionHandler oHndl = new SessionHandler(oMacc,sMBoxDir);
        DBStore oRDBMS = DBStore.open(oHndl.getSession(), oDbb.getProfileName(), sMBoxDir, oUsr.getString(DB.gu_user), oUsr.getString(DB.tx_pwd));
      DBFolder oOutbox = oRDBMS.openDBFolder("outbox",DBFolder.READ_WRITE);

      DBMimeMessage oMsg = DraftsHelper.draftMessage(oOutbox, oMacc.getString(DB.outgoing_server),
                               oUsr.getString(DB.gu_workarea),
                               oUsr.getString(DB.gu_user),
                               sTextHtml==null ? "plain" : "html");

      String sMsgId = oMsg.getContentID();

        if (null==sMsgId) throw new NullPointerException("MIME message identifier could not be set for message with GUID "+oMsg.getMessageGuid());

        DraftsHelper.draftUpdate(oCon, oUsr.getInt(DB.id_domain),
                     oUsr.getString(DB.gu_workarea),
                     oMsg.getMessageGuid(), sMsgId,
                                    sFromAddr,sReplyAddr,sFromPersonal,
                                    sSubject, "text/"+(sTextHtml==null ? "plain" : "html")+";charset="+sEncoding,
                                   (sTextHtml==null ? sTextPlain : sTextHtml), null, null, null);

      if (aAttachments!=null) {
          Integer oPart = DBCommand.queryMaxInt(oCon, DB.id_part, DB.k_mime_parts, DB.gu_mimemsg+"='"+oMsg.getMessageGuid()+"'");
          if (oPart==null) oPart = new Integer(1);
          PreparedStatement oStm = oCon.prepareStatement("INSERT INTO " + DB.k_mime_parts + "("+DB.gu_mimemsg+","+DB.id_message+","+DB.id_part+","+DB.id_disposition+","+DB.id_content+","+DB.id_type+","+DB.len_part+","+DB.de_part+","+DB.file_name+") VALUES ('"+oMsg.getMessageGuid()+"',?,?,'reference',?,?,?,?,?)");
        for (int p=0; p<aAttachments.length; p++) {
              String sFilePath = Gadgets.chomp(sUserDir,File.separator)+aAttachments[p];
              File oAttach = new File(sFilePath);
              if (oAttach.exists()) {
                oStm.setString(1, sMsgId);
                  oStm.setInt(2, oPart.intValue()+p);
              oStm.setString(3, DBMimePart.getMimeType(oCon,aAttachments[p]));       
              oStm.setString(4, DBMimePart.getMimeType(oCon,aAttachments[p]));       
              oStm.setInt(5, (int) oAttach.length());
              oStm.setString(6, aAttachments[p]);
              oStm.setString(7, sFilePath)
              oStm.executeUpdate();
              } // fi
        } // next
        oStm.close()
      } // fi

      sJobId = (sId.length()==32 ? sId : Gadgets.generateUUID());
        oJob.put(DB.gu_job, sJobId);
        oJob.put(DB.gu_workarea, oUsr.getString(DB.gu_workarea));
        oJob.put(DB.gu_writer, oUsr.getString(DB.gu_user));
        oJob.put(DB.id_command, Job.COMMAND_SEND);
        oJob.put(DB.id_status, bAutoRunJob ? Job.STATUS_SUSPENDED : Job.STATUS_PENDING);
        oJob.put(DB.tl_job, sJobTl);
        oJob.put(DB.tx_parameters, (bTestMode ? "testmode:true," : "")+
                                 "message:"+oMsg.getMessageGuid()+","+
                                 "id:"+sMsgId+","+
                                 "profile:"+oDbb.getProfileName()+","+
                                 "account:"+oMacc.getString(DB.gu_account)+","+
                                 "personalized:true"+","+
                                 "attachimages:"+(bAttachImages ? "true" : "false")+","+
                                 "clickthrough:"+(bClickThrough ? "true" : "false")+","+
                                 "webbeacon:"+(bWebBeacon ? "true" : "false")+","+
                                 "webserver:"+oSessionProps.getProperty("webserver")+","+
                                 "encoding:"+sEncoding);
        if (dtExecution!=null) oJob.put(DB.dt_execution, dtExecution);
        oJob.store(oCon);

      DBCommand.executeUpdate(oCon, "UPDATE "+DB.k_mime_msgs+" SET "+DB.gu_job+"='"+sJobId+"' WHERE "+DB.gu_mimemsg+"='"+oMsg.getMessageGuid()+"'");

        oSnd = Job.instantiate(oCon, sJobId, oDbb.getProperties());
       
        oSnd.insertRecipients(oCon, aRecipients, sRecipientType,
                              sTextHtml==null ? "text" : "html",
                              Job.STATUS_PENDING);
     
      } else {

        if (DebugFile.trace) DebugFile.writeln("Job "+sJobTl+" found with GUID "+sJobId);

        oSnd = Job.instantiate(oCon, sJobId, oDbb.getProperties());               

        oSnd.insertRecipients(oCon, aRecipients, sRecipientType,
                              sTextHtml==null ? "text" : "html",
                              Job.STATUS_PENDING);

      }
      oCon.commit();
      oCon.close("SendMail");
      oCon = null;
     
      if (bAutoRunJob) {
        SingleThreadExecutor oSte = new SingleThreadExecutor(oDbb, sJobId);
        oSte.registerCallback(SendMail.DEBUGLN);
        oSte.registerCallback(SendMail.PRINTLN);
        oSte.run();     
      } // bAutoRunJob
     
    } catch (SQLException sqle) {
      if (DebugFile.trace) DebugFile.writeln("SQLException "+sqle.getMessage());
        aWarnings.add("SQLException "+sqle.getMessage());
      if (null!=oCon) {
        if (!oCon.isClosed()) {
          if (!oCon.getAutoCommit()) oCon.rollback();
          oCon.close("SendMail");
        }
        oCon = null;
      }
      if (null==oGlobalDbb && null!=oDbb) oDbb.close();
      oDbb = null;
View Full Code Here

Examples of com.knowgate.jdc.JDCConnection

    if (null==oGlobalDbb)
      oDbb = new DBBind(sEnvCnfFileName==null ? "hipergate" : sEnvCnfFileName);
    else
    oDbb = oGlobalDbb;

    JDCConnection oCon = oDbb.getConnection("SendMail_RO1", false);
   
    ACLUser oUsr = new ACLUser(oCon, ACLUser.getIdFromEmail(oCon,sFromAddr));
    if (!oUsr.exists(oCon)) {
      oCon.close("SendMail_RO1");
      if (DebugFile.trace) DebugFile.decIdent();
    throw new SQLException(sFromAddr+" e-mail address not found at k_users table","01S06");
    }

    MailAccount oMacc = MailAccount.forUser(oCon, oUsr.getString(DB.gu_user), oDbb.getProperties());
    if (null==oMacc) {
      oCon.close("SendMail_RO1");
      if (DebugFile.trace) DebugFile.decIdent();
    throw new SQLException("No default e-mail account found for user "+oUsr.getString(DB.gu_user),"01S06");
    }

    oCon.close("SendMail_RO1");
   
    if (DebugFile.trace) DebugFile.writeln("Ready to send message "+sSubject);
   
    ArrayList aWarnings = send(oMacc, oSessionProps,
                 sUserDir, sTextHtml, sTextPlain, sEncoding,
View Full Code Here

Examples of com.knowgate.jdc.JDCConnection

    }
    else {

      DBBind oDBB = (DBBind) getPortletContext().getAttribute("GlobalDBBind");

      JDCConnection oCon = null;

      try  {
        oCon = oDBB.getConnection("PostsForGroup");

        NewsGroup oGrp = new NewsGroup(sNewsGrp);
        DBSubset  oPosts = oGrp.getTopLevelMessages(oCon, iMaxRecent, sOrderBy);
        iPosts = oPosts.getRowCount();

        oCon.close("PostsForGroup");
        oCon = null;

        Date dtPub;
        int iDtPubColPos = oPosts.getColumnPosition(DB.dt_published);
        for (int p=0; p<iPosts; p++) {
          dtPub = oPosts.getDate(iDtPubColPos,p);
          oPosts.setElementAt(Gadgets.leftPad(String.valueOf(dtPub.getMonth()+1),'0',2)+"-"+Gadgets.leftPad(String.valueOf(dtPub.getDate()),'0',2)+" "+Gadgets.leftPad(String.valueOf(dtPub.getHours()),'0',2)+":"+Gadgets.leftPad(String.valueOf(dtPub.getMinutes()),'0',2), 5,p);
        }

        sXML += "<posts>\n"+oPosts.toXML("","newsmsg")+"</posts>";
      }
      catch (SQLException e) {
        sXML += "<posts/>";

        try {
          if (null != oCon)
            if (!oCon.isClosed())
              oCon.close("PostsForGroup");
        } catch (SQLException ignore) { }
      }
    }

    try {
View Full Code Here

Examples of com.knowgate.jdc.JDCConnection

  public String getText ()
    throws SQLException,UnsupportedEncodingException,MessagingException,IOException {

    String sMsgGuid = getMessage().getMessageGuid();
    JDCConnection oConn = ((DBFolder)getMessage().getFolder()).getConnection();
    String sText = null;

    if (DebugFile.trace) {
      DebugFile.writeln("Begin DBMimePart.getText()");
      DebugFile.incIdent();
      DebugFile.writeln("Connection.prepareStatement(SELECT "+DB.id_message+","+DBBind.Functions.ISNULL+"(len_part,0),id_encoding,by_content FROM "+ DB.k_mime_parts + " WHERE (" + DB.gu_mimemsg + "='"+sMsgGuid+"') AND id_part='"+String.valueOf(iPartId)+")");
    }

    PreparedStatement oStmt = oConn.prepareStatement("SELECT "+DB.id_message+","+DBBind.Functions.ISNULL+"(len_part,0),id_encoding,by_content FROM "+ DB.k_mime_parts + " WHERE (" + DB.gu_mimemsg + "=?) AND id_part=?",
                                                     ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

    oStmt.setString(1, sMsgGuid);
    oStmt.setInt(2, iPartId);
View Full Code Here

Examples of com.knowgate.jdc.JDCConnection

  public String render(RenderRequest req, String sEncoding)
    throws PortletException, IOException, IllegalStateException {

    DBBind dbb;
    DBSubset dbs, img;
    JDCConnection con = null;
    ByteArrayInputStream oInStream;
    ByteArrayOutputStream oOutStream;
    String sOutput, sParentId, sTemplatePath, sLanguageId, sLimit, sOffset, sWrkArGet, sWorkAreaId;
    int iOffset=0, iLimit=2147483647, iCatCount=0, iImgCount=0;

    if (DebugFile.trace) {
      DebugFile.writeln("Begin CategoryList.render()");
      DebugFile.incIdent();
    }

    sOffset = req.getParameter("offset");
    sLimit = req.getParameter("limit");

    sLanguageId = req.getParameter("language");

    if (null==sLanguageId) sLanguageId = "es";

    sParentId = (String) req.getAttribute("catalog");
    sTemplatePath = (String) req.getAttribute("template");

    sWorkAreaId = req.getProperty("workarea");
    sWrkArGet = req.getProperty("workareasget");

    if (DebugFile.trace) {
      DebugFile.writeln("template=" + sTemplatePath);
      DebugFile.writeln("catalog=" + sParentId);
      DebugFile.writeln("workarea=" + sWorkAreaId);
      DebugFile.writeln("workareasget=" + sWrkArGet);
    }

    try {
      if (null!=sOffset)
        iOffset = Integer.parseInt(sOffset);
    } catch (java.lang.NumberFormatException nfe) {
        if (DebugFile.trace) DebugFile.decIdent();
        throw new PortletException("NumberFormatException parameter offset is not a valid integer value", nfe);
    }

    try {
      if (null!=sLimit)
        iLimit = Integer.parseInt(sLimit);
    } catch (java.lang.NumberFormatException nfe) {
        if (DebugFile.trace) DebugFile.decIdent();
        throw new PortletException("NumberFormatException parameter limit is not a valid integer value", nfe);
    }

    try {
      dbb = (DBBind) getPortletContext().getAttribute("GlobalDBBind");

      dbs = new DBSubset (DB.v_cat_tree_labels + " l",
                          "l."+DB.gu_category + ",l." + DB.nm_category + ",l." + DB.tr_category + ",l." + DB.de_category,
                          "l."+DB.gu_parent_cat + "=? AND l." + DB.id_language + "=? ORDER BY 3", 10);

      img = new DBSubset (DB.k_images + " i," + DB.k_x_cat_objs + " x," + DB.k_cat_tree + " c",
                          "c." + DB.gu_child_cat + ",i." + DB.gu_image + ",i." + DB.path_image + ",i." + DB.nm_image + ",i." + DB.dm_width + ",i." + DB.dm_height + ",i." + DB.tl_image,
                          "c." + DB.gu_parent_cat + "=? AND i." + DB.tp_image + " LIKE 'category%' AND i." + DB.gu_image + "=x." + DB.gu_object + " AND x." + DB.id_class + "=13 AND x." + DB.gu_category + "=c." + DB.gu_child_cat + " ORDER BY 1", 10);

      con = dbb.getConnection("CategoryList");

      if (null!=sLimit) dbs.setMaxRows(iLimit);

      if (sOffset==null)
        iCatCount = dbs.load(con, new Object[]{sParentId,sLanguageId});
      else
        iCatCount = dbs.load(con, new Object[]{sParentId,sLanguageId}, iOffset);

      iImgCount = img.load(con, new Object[]{sParentId});
    }
    catch (SQLException sqle) {
      if (DebugFile.trace) DebugFile.writeln("SQLException " + sqle.getMessage());
      if (con!=null) {
        try { if (!con.isClosed()) con.close("CategoryList"); } catch (SQLException ignore) { }
      }
      if (DebugFile.trace) DebugFile.decIdent();
      throw new PortletException("SQLException " + sqle.getMessage(), sqle);
    }

    if (DebugFile.trace) DebugFile.writeln(String.valueOf(iCatCount) + " categories and " + String.valueOf(iImgCount) + " images found");

    StringBuffer oXML = new StringBuffer(8192);

    oXML.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?xml-stylesheet type=\"text/xsl\"?>\n<categories count=\"" + String.valueOf(iCatCount) + "\">\n");

    Category oCurrentCat = new Category();

    for (int c=0; c<iCatCount; c++) {
      oXML.append("  <category>");
      oXML.append("<gu_category>"+dbs.getString(0,c)+"</gu_category><nm_category>"+dbs.getString(1,c)+"</nm_category><tr_category><![CDATA["+dbs.getStringNull(2,c,"")+"]]></tr_category><de_category><![CDATA["+dbs.getStringNull(3,c,"")+"]]></de_category>");

      oXML.append("<images>");

      for (int i=0; i<iImgCount; i++) {
        int iCompare = dbs.getString(0,c).compareTo(img.getString(0,i));

        if (iCompare>0)
          break;
        else if (iCompare==0) {
          oXML.append("<image><gu_image>"+img.getString(1,i)+"</gu_image>");

          oCurrentCat.replace(DB.gu_category, dbs.getString(0,c));

          try {
            oXML.append("<src_image>"+sWrkArGet+"/"+sWorkAreaId+"/apps/Shop/"+oCurrentCat.getPath(con)+"/"+img.getStringNull(3,i,"")+"</src_image>");
          }
          catch (SQLException sqle) {
            if (DebugFile.trace) DebugFile.writeln("SQLException at Category.getPath(" + dbs.getString(0,c) + ") " + sqle.getMessage());
            oXML.append("<src_image></src_image>");
          }

          oXML.append("<nm_image><![CDATA["+img.getStringNull(3,i,"")+"]]></nm_image>");
          if (img.isNull(4,i)) oXML.append("<dm_width></dm_width>"); else oXML.append("<dm_width>" + img.get(4,i).toString() + "</dm_width>");
          if (img.isNull(5,i)) oXML.append("<dm_height></dm_height>"); else oXML.append("<dm_height>" + img.get(5,i).toString() + "</dm_height>");
          oXML.append("<tl_image>" + img.getStringNull(6,i,"") + "</tl_image></image>");
        }
      } // next (i)
      oXML.append("</images></category>\n");
    } // next (c)

    try {
      con.close("CategoryList");
      con = null;
    }
    catch (SQLException sqle) {
      if (DebugFile.trace) DebugFile.writeln("SQLException " + sqle.getMessage());
    }
View Full Code Here

Examples of com.knowgate.jdc.JDCConnection

    String sJId;
    ResultSet oRst;
    ResultSetMetaData oMDt;

    DBBind oDBB = null;
    JDCConnection oCon = null;

  if (DebugFile.trace) {
    DebugFile.writeln("Begin SingleThreadExecutor.run("+String.valueOf(currentThread().getId())+")");
    DebugFile.writeln("environment is "+sEnvProps);
  }

    try {
      if (oGlobalDbb==null) {
        // Disable connection reaper to avoid connections being closed in the middle of job execution
        oDBB = new DBBind(sEnvProps);
        oDBB.connectionPool().setReaperDaemonDelay(0l);
      }
      else {
        oDBB = oGlobalDbb;
      }

      oCon = oDBB.getConnection("SingleThreadExecutor_"+String.valueOf(currentThread().getId()));
    oCon.setAutoCommit(true);

      bContinue = true;

      sLastError = "";

      oFdr = new AtomFeeder();

      while (bContinue) {

        if (oCon.isClosed()) {
          oCon = oDBB.getConnection("SingleThreadExecutor_"+String.valueOf(currentThread().getId()));
          oCon.setAutoCommit(true);
        }

        if (sJob==null)
          oDBS = oFdr.loadAtoms(oCon,1);
        else
          oDBS = oFdr.loadAtoms(oCon, sJob);

        if (oDBS.getRowCount()>0) {

          sJId = oDBS.getString(0,0);

          oJob = Job.instantiate(oCon, sJId, oEnvProps);

          oStm = oCon.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);

          sSQL = "SELECT a.*, j." + DB.tx_parameters + " FROM " + DB.k_job_atoms + " a, " + DB.k_jobs + " j WHERE a." + DB.id_status + "=" + String.valueOf(Atom.STATUS_PENDING) + " AND j." + DB.gu_job + "=a." + DB.gu_job + " AND j." + DB.gu_job + "='" + sJId + "'";

        if (DebugFile.trace) {
          DebugFile.writeln("Statement.executeQuery("+sSQL+")");
        }

          oRst = oStm.executeQuery(sSQL);
          oMDt = oRst.getMetaData();

          while (oRst.next()) {

            oAtm = new Atom(oRst, oMDt);

        try {
              oJob.process(oAtm);
              oAtm.archive(oCon);           
              if (DebugFile.trace)
                DebugFile.writeln("Thread " + String.valueOf(currentThread().getId()) + " consumed Atom " + String.valueOf(oAtm.getInt(DB.pg_atom)));
            if (iCallbacks>0) callBack(WorkerThreadCallback.WT_ATOM_CONSUME, oJob.getString(DB.gu_job), null, oAtm.getString(DB.tx_email));
        }
            catch (Exception e) {
              if (DebugFile.trace) {
                DebugFile.writeln(getName() + " " + e.getClass().getName() + " job " + oJob.getString(DB.gu_job) + " atom " + String.valueOf(oAtm.getInt(DB.pg_atom)) + e.getMessage());
                DebugFile.writeln(StackTraceUtil.getStackTrace(e));
              }

              sLastError = e.getClass().getName() + ", job " + oJob.getString(DB.gu_job) + " ";
              sLastError = "atom " + String.valueOf(oAtm.getInt(DB.pg_atom)) + " ";
              sLastError += e.getMessage() + "\n" + StackTraceUtil.getStackTrace(e) + "\n";
              try {
                oAtm.setStatus(oCon, Atom.STATUS_INTERRUPTED, e.getClass().getName() + " " + e.getMessage());
              } catch (SQLException sqle) {
                if (DebugFile.trace) DebugFile.writeln("Atom.setStatus() SQLException " + sqle.getMessage());
              }
              oJob.log(sLastError);

              if (iCallbacks>0) callBack(WorkerThreadCallback.WT_EXCEPTION, "Thread " + getName() + " " + sLastError, e, oJob);
            }

            if (oJob.pending()==0) {
              oJob.setStatus(oCon, Job.STATUS_FINISHED);
              if (iCallbacks>0) callBack(WorkerThreadCallback.WT_JOB_FINISH, "finish", null, oJob);
              if (sJob!=null) bContinue = false;
            }
          } // wend
          oRst.close();
          oStm.close();
        }
        else
          bContinue = false;
      } // wend

      if (!oCon.isClosed())
        oCon.close("SingleThreadExecutor_"+String.valueOf(currentThread().getId()));

      if (oGlobalDbb==null && oDBB!=null) oDBB.close();
    }
    catch (SQLException e) {

    try { if (oCon!=null) if (!oCon.isClosed()) oCon.close(); } catch (Exception ignore) {}

      if (oGlobalDbb==null && oDBB!=null) oDBB.close();

      sLastError = "SQLException " + e.getMessage();

      if (iCallbacks>0) callBack(-1, sLastError, new SQLException(e.getMessage(), e.getSQLState(), e.getErrorCode()), null);

      if (oJob!=null) oJob.log(sLastError + "\n");

    }
    catch (FileNotFoundException e) {

    try { if (oCon!=null) if (!oCon.isClosed()) oCon.close(); } catch (Exception ignore) {}

      if (oGlobalDbb==null && oDBB!=null) oDBB.close();

      sLastError = "FileNotFoundException " + e.getMessage();

      if (iCallbacks>0) callBack(-1, sLastError, new FileNotFoundException(e.getMessage()), null);

      if (oJob!=null) oJob.log(sLastError + "\n");
    }
    catch (IOException e) {

    try { if (oCon!=null) if (!oCon.isClosed()) oCon.close(); } catch (Exception ignore) {}

      if (oGlobalDbb==null && oDBB!=null) oDBB.close();

      sLastError = "IOException " + e.getMessage();

      if (iCallbacks>0) callBack(-1, sLastError, new IOException(e.getMessage()), null);

      if (oJob!=null) oJob.log(sLastError + "\n");
    }
    catch (ClassNotFoundException e) {

    try { if (oCon!=null) if (!oCon.isClosed()) oCon.close(); } catch (Exception ignore) {}

      if (oGlobalDbb==null && oDBB!=null) oDBB.close();

      sLastError = "ClassNotFoundException " + e.getMessage();

      if (iCallbacks>0) callBack(-1, sLastError, new ClassNotFoundException(e.getMessage()), null);

      if (oJob!=null) oJob.log(sLastError + "\n");
    }
    catch (InstantiationException e) {

    try { if (oCon!=null) if (!oCon.isClosed()) oCon.close(); } catch (Exception ignore) {}

      if (oGlobalDbb==null && oDBB!=null) oDBB.close();

      sLastError = "InstantiationException " + e.getMessage();

      if (iCallbacks>0) callBack(-1, sLastError, new InstantiationException(e.getMessage()), null);

      if (oJob!=null) oJob.log(sLastError + "\n");
    }
    catch (IllegalAccessException e) {

    try { if (oCon!=null) if (!oCon.isClosed()) oCon.close(); } catch (Exception ignore) {}

      if (oGlobalDbb==null && oDBB!=null) oDBB.close();

      sLastError = "IllegalAccessException " + e.getMessage();

      if (iCallbacks>0) callBack(-1, sLastError, new IllegalAccessException(e.getMessage()), null);

      if (oJob!=null) oJob.log(sLastError + "\n");
    }
    catch (NullPointerException e) {

    try { if (oCon!=null) if (!oCon.isClosed()) oCon.close(); } catch (Exception ignore) {}

      if (oGlobalDbb==null && oDBB!=null) oDBB.close();

      sLastError = "NullPointerException " + e.getMessage();

View Full Code Here

Examples of com.knowgate.jdc.JDCConnection

    String sUid,sUsr,sPwd,sWrkA,sDtStart,sDtEnd,sMeet,sRoom,sType;
    Date oDtStart, oDtEnd;
    StringBuffer oBuf = new StringBuffer();
    oBuf.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
   
    JDCConnection oCon = null;
    String sTok;
   
    String sCmd = request.getParameter("command");
    if (null==sCmd) {
       response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter command is requiered");
    } else if (sCmd.length()==0) {
       response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter command is requiered");
    } else {
      String sOut = request.getParameter("output");
      if (null==sOut) sOut="xml";

    if (sCmd.equalsIgnoreCase("connect")) {
        sUsr = request.getParameter("user");
        sPwd = request.getParameter("password");
        if (null==sUsr) {
          response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter user is requiered");
        } else if (null==sPwd) {
          response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter password is requiered");
        } else {
          iAuth = ACL.INTERNAL_ERROR;
          int iEnc = 0;
          try {
            String sEnc = request.getParameter("encryption");
            if (null==sEnc) sEnc = "0";
            if (sEnc.length()==0) sEnc = "0";
        iEnc = Integer.parseInt(sEnc);
        oCon = oDbb.getConnection("HttpCalendarServlet.connect");
        sUid = ACLUser.getIdFromEmail(oCon, sUsr);
        if (sUid==null)
          iAuth = ACL.USER_NOT_FOUND;
        else
          iAuth = ACL.autenticate(oCon, sUid, sPwd, iEnc);
            oCon.close("HttpCalendarServlet.connect");
          } catch (SQLException sqle) {
            try { if (oCon!=null) if (!oCon.isClosed()) oCon.close("HttpCalendarServlet.connect"); } catch (Exception ignore) { }         
            response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
      return;
          } catch (NumberFormatException nfe) {
            response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid value for encryption parameter");
      return;
          } finally {
            oCon = null;
          }
          if (iAuth<0) {
            oBuf.append("<calendarresponse command=\"connect\" code=\""+String.valueOf(iAuth)+"\"><error>"+ACL.getErrorMessage(iAuth)+"</error><value/></calendarresponse>");
          } else {
            sTok = Gadgets.generateRandomId(40, null, Character.LOWERCASE_LETTER);
            while (oSecurityTokens.containsKey(sTok))
              sTok = Gadgets.generateRandomId(40, null, Character.LOWERCASE_LETTER);
        try {
          oCon = oDbb.getConnection("HttpCalendarServlet.getid");
          sWrkA = DBCommand.queryStr(oCon, "SELECT "+DB.gu_workarea+" FROM "+DB.k_users+" WHERE "+DB.gu_user+"='"+sUid+"'");
              oCon.close("HttpCalendarServlet.getid");
              if (null==sWrkA) {
              oBuf.append("<calendarresponse command=\"connect\" code=\""+String.valueOf(ACL.WORKAREA_NOT_SET)+"\"><error>"+ACL.getErrorMessage(ACL.WORKAREA_NOT_SET)+"</error><value/></calendarresponse>");
              } else {
                oSecurityTokens.put(sTok, new NameValuePair(sUid, ACL.decript(sPwd,iEnc)));
                oWorkAreas.put(sTok, sWrkA);
                if (sOut.equalsIgnoreCase("xml")) {
                  oBuf.append("<calendarresponse command=\"connect\" code=\"0\"><error></error><value>"+sTok+"</value></calendarresponse>");
              }
              }
            } catch (SQLException sqle) {
              try { if (oCon!=null) if (!oCon.isClosed()) oCon.close("HttpCalendarServlet.getid"); } catch (Exception ignore) { }         
              response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
        return;
            }
          }
          response.setContentType("text/xml");
          response.setCharacterEncoding("UTF-8");
          response.getWriter().print(oBuf.toString());
        }
    } else if (sCmd.equalsIgnoreCase("isAvailableRoom") || sCmd.equalsIgnoreCase("getAvailableRooms") ||
               sCmd.equalsIgnoreCase("getMeetings") || sCmd.equalsIgnoreCase("getMeetingsForRoom") ||
               sCmd.equalsIgnoreCase("getMeetingsOrganizedBy") ||
               sCmd.equalsIgnoreCase("getMeeting") || sCmd.equals("getRooms") ||
               sCmd.equalsIgnoreCase("storeMeeting") || sCmd.equalsIgnoreCase("deleteMeeting") ||
               sCmd.equalsIgnoreCase("disconnect")) {
        sTok = request.getParameter("token");
    sMeet = request.getParameter("meeting");
    sType = request.getParameter("type");
    sRoom = request.getParameter("room");
    sDtStart = request.getParameter("startdate");
    sDtEnd = request.getParameter("enddate");
        if (null==sTok) {
          response.sendError(HttpServletResponse.SC_FORBIDDEN, "No security token was supplied");
        } else {
      NameValuePair oUsrPwd = oSecurityTokens.get(sTok);
      if (null==oUsrPwd) {
            oBuf.append("<calendarresponse command=\""+sCmd+"\" code=\""+String.valueOf(ACL.DOMAIN_NOT_FOUND)+"\"><error>Invalid security token</error><value/></calendarresponse>");
      } else {
            try {
          oCon = oDbb.getConnection("HttpCalendarServlet.authenticate");
          iAuth = ACL.autenticate(oCon, oUsrPwd.getName(), oUsrPwd.getValue(), ACL.PWD_CLEAR_TEXT);
          sUid = oUsrPwd.getName();
              oCon.close("HttpCalendarServlet.authenticate");
            } catch (SQLException sqle) {
              try { if (oCon!=null) if (!oCon.isClosed()) oCon.close("HttpCalendarServlet.authenticate"); } catch (Exception ignore) { }         
              response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
        return;
            }
            if (iAuth<0) {
              oBuf.append("<calendarresponse command=\""+sCmd+"\" code=\""+String.valueOf(iAuth)+"\"><error>"+ACL.getErrorMessage(iAuth)+"</error><value/></calendarresponse>");
            } else {
              sWrkA = oWorkAreas.get(sTok);
        if (sCmd.equalsIgnoreCase("isAvailableRoom")) {
          if (null==sRoom) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter room is requiered");
          } else if (null==sDtStart) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter startdate is requiered");           
          } else if (null==sDtEnd) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter enddate is requiered");           
          } else {
          try {
            oDtStart = oFmt.parse(sDtStart);
            oDtEnd = oFmt.parse(sDtEnd);
              oCon = oDbb.getConnection("HttpCalendarServlet.isavailableroom",true);
          Room oRoom = new Room();
          boolean bIsAvail;
          if (oRoom.load(oCon, sRoom, sWrkA))
            bIsAvail = oRoom.isAvailable(oCon, oDtStart, oDtEnd);
                  else
                    bIsAvail = false;
                  oCon.close("HttpCalendarServlet.isavailableroom");
                  oBuf.append("<calendarresponse command=\"isAvailableRoom\" code=\"0\"><error></error><value>"+String.valueOf(bIsAvail)+"</value></calendarresponse>");
                response.setContentType("text/xml");
                response.setCharacterEncoding("UTF-8");
                response.getWriter().print(oBuf.toString());
          } catch (ParseException dpe) {
                  response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid date it must be yyyyMMddHHmmss");
            return;
          } catch (SQLException sqle) {
                  try { if (oCon!=null) if (!oCon.isClosed()) oCon.close("HttpCalendarServlet.isavailableroom"); } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
            return;
                }       
          }
        } else if (sCmd.equalsIgnoreCase("getRooms")) {
        try {
              DBSubset oRooms;
              int nRooms;
              oCon = oDbb.getConnection("HttpCalendarServlet.getrooms",true);
              if (request.getParameter("type")==null) {
            oRooms = new DBSubset(DB.k_rooms,DB.tp_room+","+DB.nm_room+","+DB.tx_comments, DB.gu_workarea+"=?", 100);
                nRooms = oRooms.load(oCon, new Object[]{sWrkA});
              } else if (request.getParameter("type").length()==0) {
            oRooms = new DBSubset(DB.k_rooms,DB.tp_room+","+DB.nm_room+","+DB.tx_comments, DB.gu_workarea+"=?", 100);
                nRooms = oRooms.load(oCon, new Object[]{sWrkA});
              } else {
            oRooms = new DBSubset(DB.k_rooms,DB.tp_room+","+DB.nm_room+","+DB.tx_comments, DB.gu_workarea+"=? AND "+DB.tp_room+"=?", 100);
                nRooms = oRooms.load(oCon, new Object[]{sWrkA, request.getParameter("type")});
              }
                    oBuf.append("<calendarresponse command=\"getRooms\" code=\"0\"><error></error><value>"+String.valueOf(nRooms)+"</value><rooms count=\""+String.valueOf(nRooms)+"\">");
                    for (int r=0; r<nRooms; r++) {
                      oBuf.append("<room type=\""+oRooms.getStringNull(0,r,"")+"\" active=\"1\"><name>"+oRooms.getStringNull(1,r,"")+"</name><comments>"+oRooms.getStringNull(2,r,"")+"</comments></room>");
                    } // next
                  oCon.close("HttpCalendarServlet.getavailablerooms");
                    oBuf.append("</rooms></calendarresponse>");
                response.setContentType("text/xml");
                response.setCharacterEncoding("UTF-8");
                response.getWriter().print(oBuf.toString());
        } catch (SQLException sqle) {
                  try { if (oCon!=null) if (!oCon.isClosed()) oCon.close("HttpCalendarServlet.getrooms"); } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
            return;
             
        } else if (sCmd.equalsIgnoreCase("getAvailableRooms")) {
          if (null==sDtStart) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter startdate is required");           
          } else if (null==sDtEnd) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter enddate is required");           
          } else {
          try {
            oDtStart = oFmt.parse(sDtStart);
            oDtEnd = oFmt.parse(sDtEnd);
              DBSubset oRooms = new DBSubset(DB.k_rooms,DB.tp_room+","+DB.nm_room+","+DB.tx_comments, DB.bo_available+"<>0 AND "+DB.gu_workarea+"=?", 100);
              oCon = oDbb.getConnection("HttpCalendarServlet.getavailablerooms",true);
              int nRooms = oRooms.load(oCon, new Object[]{sWrkA});
                    oBuf.append("<calendarresponse command=\"getAvailableRooms\" code=\"0\"><error></error><value>"+String.valueOf(nRooms)+"</value><rooms count=\""+String.valueOf(nRooms)+"\">");
            Room oRomn = new Room();
                    for (int r=0; r<nRooms; r++) {
              if (oRomn.load(oCon, oRooms.get(1,r), sWrkA)) {
                        if (oRomn.isAvailable(oCon, oDtStart, oDtEnd))
                          oBuf.append("<room type=\""+oRooms.getStringNull(0,r,"")+"\" active=\"1\"><name>"+oRooms.getStringNull(1,r,"")+"</name><comments>"+oRooms.getStringNull(2,r,"")+"</comments></room>");
              }
                    } // next
                  oCon.close("HttpCalendarServlet.getavailablerooms");
                    oBuf.append("</rooms></calendarresponse>");
                response.setContentType("text/xml");
                response.setCharacterEncoding("UTF-8");
                response.getWriter().print(oBuf.toString());
          } catch (ParseException dpe) {
                  response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid date it must be yyyyMMddHHmmss");
            return;
          } catch (SQLException sqle) {
                  try { if (oCon!=null) if (!oCon.isClosed()) oCon.close("HttpCalendarServlet.getavailablerooms"); } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
            return;
               
          }
        } else if (sCmd.equalsIgnoreCase("getMeetings") || sCmd.equalsIgnoreCase("getMeetingsOrganizedBy")) {

          if (DebugFile.trace) DebugFile.writeln("Executing command "+sCmd)

          if (null==sDtStart) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter startdate is requiered");           
          } else if (null==sDtEnd) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter enddate is requiered");           
          } else {

            if (DebugFile.trace) DebugFile.writeln("startdate and enddate parameters acknowledged");

          try {
              if (DebugFile.trace) DebugFile.writeln("parsing startdate");
            oDtStart = oFmt.parse(sDtStart);
              if (DebugFile.trace) DebugFile.writeln("parsing enddate");
            oDtEnd = oFmt.parse(sDtEnd);
            DBSubset oMeets;
            int nMeets;           
          if (sCmd.equalsIgnoreCase("getMeetings")) {
                oMeets = new DBSubset(DB.k_meetings + " m," + DB.k_x_meeting_fellow + " f," + DB.k_fellows + " o",
                                      "m." + DB.id_icalendar + ",m." + DB.gu_meeting + ",m." + DB.dt_start + ",m." + DB.dt_end + ",m." + DB.bo_private + ",m." + DB.tx_meeting + ",m." + DB.de_meeting +","+
                                      "o." + DB.gu_fellow + ",o." + DB.id_ref + ",o." + DB.tx_name + ",o." + DB.tx_surname + ",o." + DB.tx_email + ",o." + DB.tx_timezone + ",m." + DB.tp_meeting,
                                    "m."+DB.gu_workarea+"=? AND f."+DB.gu_fellow+"=o."+DB.gu_fellow+" AND "+
                                      "f." + DB.gu_meeting + "=m." + DB.gu_meeting + " AND f." + DB.gu_fellow + "=? AND m." + DB.dt_start + " BETWEEN ? AND ? "+
                                      (sType!=null ? " AND m."+DB.tp_meeting+"=?" : "")+" ORDER BY 3", 60);
          } else {
                oMeets = new DBSubset(DB.k_meetings + " m," + DB.k_fellows + " o",
                                      "m." + DB.id_icalendar + ",m." + DB.gu_meeting + ",m." + DB.dt_start + ",m." + DB.dt_end + ",m." + DB.bo_private + ",m." + DB.tx_meeting + ",m." + DB.de_meeting +","+
                                      "o." + DB.gu_fellow + ",o." + DB.id_ref + ",o." + DB.tx_name + ",o." + DB.tx_surname + ",o." + DB.tx_email + ",o." + DB.tx_timezone,
                                    "m."+DB.gu_workarea+"=? AND m."+DB.gu_fellow+"=o."+DB.gu_fellow+" AND "+
                                      "m." + DB.gu_fellow + "=? AND m." + DB.dt_start + " BETWEEN ? AND ? "+
                                      (sType!=null ? " AND m."+DB.tp_meeting+"=?" : "")+" ORDER BY 3", 60);           
          }
              oCon = oDbb.getConnection("HttpCalendarServlet.getmeetings",true);
              if (sType==null)
                nMeets = oMeets.load(oCon, new Object[]{sWrkA, sUid, new Timestamp(oDtStart.getTime()), new Timestamp(oDtEnd.getTime())});
              else
                nMeets = oMeets.load(oCon, new Object[]{sWrkA, sUid, new Timestamp(oDtStart.getTime()), new Timestamp(oDtEnd.getTime()), sType});
              if (DebugFile.trace) DebugFile.writeln(String.valueOf(nMeets)+" meetings found");
                    oBuf.append("<calendarresponse command=\"getMeetings\" code=\"0\"><error></error><value>"+String.valueOf(nMeets)+"</value><meetings count=\""+String.valueOf(nMeets)+"\">");
                    for (int m=0; m<nMeets; m++) {
                      oBuf.append("<meeting type=\""+oMeets.getStringNull(13,m,"")+"\">");
                      oBuf.append("<id>"+oMeets.getStringNull(DB.id_icalendar,m,"")+"</id>");
                      oBuf.append("<gu>"+oMeets.getString(DB.gu_meeting,m)+"</gu>");
                      oBuf.append("<startdate>"+oMeets.getDateFormated(2,m,oXmt).replace(' ','T')+"</startdate>");
                      oBuf.append("<enddate>"+oMeets.getDateFormated(3,m,oXmt).replace(' ','T')+"</enddate>");
                      if (oMeets.isNull(4,m))
                        oBuf.append("<privacy>false</privacy>");
                      else
                        oBuf.append("<privacy>"+String.valueOf(oMeets.getShort(4,m)!=0)+"</privacy>");
                      oBuf.append("<title>"+oMeets.getStringNull(5,m,"")+"</title>");
                      oBuf.append("<description>"+oMeets.getStringNull(6,m,"")+"</description>");
                      oBuf.append("<organizer>");
                      oBuf.append("<id>"+oMeets.getStringNull(8,m,"")+"</id>");
                      oBuf.append("<gu>"+oMeets.getString(7,m)+"</gu>");
                      oBuf.append("<name>"+oMeets.getStringNull(9,m,"")+"</name>");
                      oBuf.append("<surname>"+oMeets.getStringNull(10,m,"")+"</surname>");
                      oBuf.append("<email>"+oMeets.getStringNull(11,m,"")+"</email>");
                      oBuf.append("<timezone>"+oMeets.getStringNull(12,m,"")+"</timezone>");
                      oBuf.append("</organizer>");
                DBSubset oRomm = new DBSubset(DB.k_rooms+" r,"+DB.k_x_meeting_room+" m","r."+DB.tp_room+",r."+DB.nm_room+",r."+DB.tx_comments+",r."+DB.bo_available,
                                "r."+DB.gu_workarea+"=? AND m."+DB.gu_meeting+"=? AND r."+DB.nm_room+"=m."+DB.nm_room, 10);
              int nRomm = oRomm.load(oCon, new Object[]{sWrkA, oMeets.getString(DB.gu_meeting,m)});
                      oBuf.append("<rooms count=\""+String.valueOf(nRomm)+"\">");                 
                      for (int r=0; r<nRomm; r++) {
                        oBuf.append("<room type=\""+oRomm.getStringNull(0,r,"")+"\" ");
                        if (oRomm.isNull(3,r))
                          oBuf.append("active=\"1\"");
                        else
                          oBuf.append("active=\""+String.valueOf(oRomm.getShort(3,r))+"\"");                         
                        oBuf.append("><name>"+oRomm.getStringNull(1,r,"")+"</name><comments>"+oRomm.getStringNull(2,r,"")+"</comments></room>");
                      } // next
                      oBuf.append("</rooms>");
                      DBSubset oFlws = new DBSubset(DB.k_fellows +" f,"+DB.k_x_meeting_fellow +" x",
                                          "f." + DB.gu_fellow + ",f." + DB.id_ref + ",f." + DB.tx_name + ",f." + DB.tx_surname + ",f." + DB.tx_email + ",f." + DB.tx_timezone,
                                      "f."+DB.tx_email+" IS NOT NULL AND f."+DB.gu_fellow+"=x."+DB.gu_fellow+" AND x."+DB.gu_meeting+"=?", 10);
                      DBSubset oCnts = new DBSubset(DB.k_member_address+" c,"+DB.k_x_meeting_contact+" x",
                                          "c." + DB.gu_contact + ",c." + DB.id_ref + ",c." + DB.tx_name + ",c." + DB.tx_surname + ",c." + DB.tx_email + ",'+00:00' AS " + DB.tx_timezone,
                                      "c."+DB.tx_email+" IS NOT NULL AND c."+DB.gu_contact+"=x."+DB.gu_contact+" AND x."+DB.gu_meeting+"=?", 10);
                      oFlws.load(oCon, new Object[]{oMeets.getString(DB.gu_meeting,m)});
                      oCnts.load(oCon, new Object[]{oMeets.getString(DB.gu_meeting,m)});
                      oFlws.union(oCnts);
                      oBuf.append("<attendants count=\""+String.valueOf(oFlws.getRowCount())+"\">");
                      for (int f=0; f<oFlws.getRowCount(); f++) {
                        oBuf.append("<attendant>");
                        oBuf.append("<id>"+oFlws.getStringNull(1,f,"")+"</id>");
                        oBuf.append("<gu>"+oFlws.getString(0,f)+"</gu>");
                        oBuf.append("<name>"+oFlws.getStringNull(2,f,"")+"</name>");
                        oBuf.append("<surname>"+oFlws.getStringNull(3,f,"")+"</surname>");
                        oBuf.append("<email>"+oFlws.getStringNull(4,f,"")+"</email>");
                        oBuf.append("<timezone>"+oFlws.getStringNull(5,f,"")+"</timezone>");
                        oBuf.append("</attendant>");
                      }
                      oBuf.append("</attendants>");
                      oBuf.append("</meeting>");
                    } // next
                  oCon.close("HttpCalendarServlet.getmeetings");
                    oBuf.append("</meetings></calendarresponse>");
                response.setContentType("text/xml");
                response.setCharacterEncoding("UTF-8");
                response.getWriter().print(oBuf.toString());
          } catch (ParseException dpe) {
                  response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid date it must be yyyyMMddHHmmss");
            return;
          } catch (SQLException sqle) {
                  try { if (oCon!=null) if (!oCon.isClosed()) oCon.close("HttpCalendarServlet.getmeetings"); } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
            return;
                }
              }
        } else if (sCmd.equalsIgnoreCase("getMeetingsForRoom")) {
          if (null==sRoom) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter room is requiered");
          } else if (null==sDtStart) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter startdate is requiered");           
          } else if (null==sDtEnd) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter enddate is requiered");           
          } else {
          try {
            oDtStart = oFmt.parse(sDtStart);
            oDtEnd = oFmt.parse(sDtEnd);
              DBSubset oMeets = new DBSubset(DB.k_meetings + " m," + DB.k_x_meeting_fellow + " f," +DB.k_x_meeting_room + " r," + DB.k_fellows + " o",
                                             "m." + DB.id_icalendar + ",m." + DB.gu_meeting + ",m." + DB.dt_start + ",m." + DB.dt_end + ",m." + DB.bo_private + ",m." + DB.tx_meeting + ",m." + DB.de_meeting+","+
                                             "o." + DB.gu_fellow + ",o." + DB.id_ref + ",o." + DB.tx_name + ",o." + DB.tx_surname + ",o." + DB.tx_email + ",o." + DB.tx_timezone + ",m." + DB.tp_meeting,
                                           "m."+DB.gu_workarea+"=? AND r."+DB.nm_room+"=? AND "+
                                             "r." + DB.gu_meeting + "=m." + DB.gu_meeting + " AND f."+DB.gu_fellow+"=o."+DB.gu_fellow+" AND "+
                                             "f." + DB.gu_meeting + "=m." + DB.gu_meeting + " AND " +
                                             "f." + DB.gu_fellow + "=? AND m." + DB.dt_start + " BETWEEN ? AND ? ORDER BY 3", 60);
              oCon = oDbb.getConnection("HttpCalendarServlet.getmeetingsforroom",true);
              int nMeets = oMeets.load(oCon, new Object[]{sWrkA, sRoom, sUid, new Timestamp(oDtStart.getTime()), new Timestamp(oDtEnd.getTime())});
                    oBuf.append("<calendarresponse command=\"getMeetings\" code=\"0\"><error></error><value>"+String.valueOf(nMeets)+"</value><meetings count=\""+String.valueOf(nMeets)+"\">");
                    for (int m=0; m<nMeets; m++) {
                      oBuf.append("<meeting type=\""+oMeets.getStringNull(13,m,"")+"\">");
                      oBuf.append("<id>"+oMeets.getStringNull(DB.id_icalendar,m,"")+"</id>");
                      oBuf.append("<gu>"+oMeets.getString(DB.gu_meeting,m)+"</gu>");
                      oBuf.append("<startdate>"+oMeets.getDateFormated(2,m,oXmt).replace(' ','T')+"</startdate>");
                      oBuf.append("<enddate>"+oMeets.getDateFormated(3,m,oXmt).replace(' ','T')+"</enddate>");
                      if (oMeets.isNull(4,m))
                        oBuf.append("<privacy>false</privacy>");
                      else
                        oBuf.append("<privacy>"+String.valueOf(oMeets.getShort(4,m)!=0)+"</privacy>");
                      oBuf.append("<title>"+oMeets.getStringNull(5,m,"")+"</title>");
                      oBuf.append("<description>"+oMeets.getStringNull(6,m,"")+"</description>");
                      oBuf.append("<organizer>");
                      oBuf.append("<id>"+oMeets.getStringNull(8,m,"")+"</id>");
                      oBuf.append("<gu>"+oMeets.getString(7,m)+"</gu>");
                      oBuf.append("<name>"+oMeets.getStringNull(9,m,"")+"</name>");
                      oBuf.append("<surname>"+oMeets.getStringNull(10,m,"")+"</surname>");
                      oBuf.append("<email>"+oMeets.getStringNull(11,m,"")+"</email>");
                      oBuf.append("<timezone>"+oMeets.getStringNull(12,m,"")+"</timezone>");
                      oBuf.append("</organizer>");
                Room oRoom = new Room();
                oRoom.load(oCon, sRoom, sWrkA);
                      oBuf.append("<rooms count=\"1\">");                 
                      oBuf.append("<room type=\""+oRoom.getStringNull(DB.tp_room,"")+"\" active=\""+(oRoom.get(DB.bo_available)==null ? "1" : oRoom.get(DB.bo_available))+"\"><name>"+oRoom.getStringNull(DB.nm_room,"")+"</name><comments>"+oRoom.getStringNull(DB.tx_comments,"")+"</comments></room>");
                      oBuf.append("</rooms>");
                      DBSubset oFlws = new DBSubset(DB.k_fellows +" f,"+DB.k_x_meeting_fellow +" x",
                                          "f." + DB.gu_fellow + "f." + DB.id_ref + ",f." + DB.tx_name + "f." + DB.tx_surname + "f." + DB.tx_email + "f." + DB.tx_timezone,
                                            "f."+DB.tx_email+" IS NOT NULL AND f."+DB.gu_fellow+"=x."+DB.gu_fellow+" AND x."+DB.gu_meeting+"=?", 10);
                      DBSubset oCnts = new DBSubset(DB.k_member_address+" c,"+DB.k_x_meeting_contact+" x", "c."+DB.tx_email, "c."+DB.tx_email+" IS NOT NULL AND c."+DB.gu_contact+"=x."+DB.gu_contact+" AND x."+DB.gu_meeting+"=?", 10);
                      oFlws.load(oCon, new Object[]{oMeets.getString(DB.gu_meeting,m)});
                      oCnts.load(oCon, new Object[]{oMeets.getString(DB.gu_meeting,m)});
                      oFlws.union(oCnts);
                      oBuf.append("<attendants count=\""+String.valueOf(oFlws.getRowCount())+"\">");
                      for (int f=0; f<oFlws.getRowCount(); f++) {
                        oBuf.append("<attendant>");
                        oBuf.append("<id>"+oFlws.getStringNull(1,f,"")+"</id>");
                        oBuf.append("<gu>"+oFlws.getString(0,f)+"</gu>");
                        oBuf.append("<name>"+oFlws.getStringNull(2,f,"")+"</name>");
                        oBuf.append("<surname>"+oFlws.getStringNull(3,f,"")+"</surname>");
                        oBuf.append("<email>"+oFlws.getStringNull(4,f,"")+"</email>");
                        oBuf.append("<timezone>"+oFlws.getStringNull(5,f,"")+"</timezone>");
                        oBuf.append("</attendant>");
                      }
                      oBuf.append("</attendants>");
                      oBuf.append("</meeting>");
                    } // next
                  oCon.close("HttpCalendarServlet.getmeetingsforroom");
                    oBuf.append("</meetings></calendarresponse>");
                response.setContentType("text/xml");
                response.setCharacterEncoding("UTF-8");
                response.getWriter().print(oBuf.toString());
          } catch (ParseException dpe) {
                  response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid date it must be yyyyMMddHHmmss");
            return;
          } catch (SQLException sqle) {
                  try { if (oCon!=null) if (!oCon.isClosed()) oCon.close("HttpCalendarServlet.getmeetingsforroom"); } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
            return;
                }
              }
        } else if (sCmd.equalsIgnoreCase("getMeeting")) {
          if (null==sMeet) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter meeting is requiered");
          } else {
            try {
              oCon = oDbb.getConnection("HttpCalendarServlet.getmeeting",true);
          Meeting oMeet = new Meeting();
          PreparedStatement oStm = oCon.prepareStatement("SELECT "+DB.gu_meeting+" FROM "+DB.k_meetings+" WHERE "+DB.gu_workarea+"=? AND ("+DB.gu_meeting+"=? OR "+DB.id_icalendar+"=?)", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
          oStm.setString(1, sWrkA);
          oStm.setString(2, sMeet);
          oStm.setString(3, sMeet);
          ResultSet oRst = oStm.executeQuery();         
          if (oRst.next()) {
            oMeet.load(oCon, oRst.getString(1));
                      oBuf.append("<calendarresponse command=\"getMeeting\" code=\"0\"><error></error><value>true</value><meetings count=\"1\"><meeting type=\""+oMeet.getStringNull(DB.tp_meeting,"")+"\">");
                      oBuf.append("<id>"+oMeet.getStringNull(DB.id_icalendar,"")+"</id>");
                      oBuf.append("<gu>"+oMeet.getString(DB.gu_meeting)+"</gu>");
                      oBuf.append("<startdate>"+oXmt.format(oMeet.getDate(DB.dt_start)).replace(' ','T')+"</startdate>");
                      oBuf.append("<enddate>"+oXmt.format(oMeet.getDate(DB.dt_end)).replace(' ','T')+"</enddate>");
                      if (oMeet.isNull(DB.bo_private))
                        oBuf.append("<privacy>0</privacy>");
                      else
                        oBuf.append("<privacy>"+String.valueOf(oMeet.getShort(DB.bo_private))+"</privacy>");
                      oBuf.append("<title>"+oMeet.getStringNull(DB.tx_meeting,"")+"</title>");
                      oBuf.append("<description>"+oMeet.getStringNull(DB.de_meeting,"")+"</description>");             
            Fellow oOrg = new Fellow(oCon, oMeet.getString(DB.gu_fellow));
                      oBuf.append("<organizer>");
                      oBuf.append("<id>"+oOrg.getStringNull(DB.id_ref,"")+"</id>");
                      oBuf.append("<gu>"+oOrg.getString(DB.gu_fellow)+"</gu>");
                      oBuf.append("<name>"+oOrg.getStringNull(DB.tx_name,"")+"</name>");
                      oBuf.append("<surname>"+oOrg.getStringNull(DB.tx_surname,"")+"</surname>");
                      oBuf.append("<email>"+oOrg.getStringNull(DB.tx_email,"")+"</email>");
                      oBuf.append("<timezone>"+oOrg.getStringNull(DB.tx_timezone,"")+"</timezone>");
                      oBuf.append("</organizer>");
                DBSubset oRomm = new DBSubset(DB.k_rooms+" r,"+DB.k_x_meeting_room+" m","r."+DB.tp_room+",r."+DB.nm_room+",r."+DB.tx_comments,
                                "r."+DB.gu_workarea+"=? AND m."+DB.gu_meeting+"=? AND r."+DB.nm_room+"=m."+DB.nm_room, 10);
              int nRomm = oRomm.load(oCon, new Object[]{sWrkA, oMeet.getString(DB.gu_meeting)});
                      oBuf.append("<rooms count=\""+String.valueOf(nRomm)+"\">");
                      for (int r=0; r<nRomm; r++) {
                        oBuf.append("<room type=\""+oRomm.getStringNull(0,r,"")+"\"><name>"+oRomm.getStringNull(1,r,"")+"</name><comments>"+oRomm.getStringNull(2,r,"")+"</comments></room>");
                      } // next
                      oBuf.append("</rooms>");
                      DBSubset oFlws = new DBSubset(DB.k_fellows +" f,"+DB.k_x_meeting_fellow +" x",
                                          "f." + DB.gu_fellow + ",f." + DB.id_ref + ",f." + DB.tx_name + ",f." + DB.tx_surname + ",f." + DB.tx_email + ",f." + DB.tx_timezone,
                                      "f."+DB.tx_email+" IS NOT NULL AND f."+DB.gu_fellow+"=x."+DB.gu_fellow+" AND x."+DB.gu_meeting+"=?", 10);
                      DBSubset oCnts = new DBSubset(DB.k_member_address+" c,"+DB.k_x_meeting_contact+" x",
                                          "c." + DB.gu_contact + ",c." + DB.id_ref + ",c." + DB.tx_name + ",c." + DB.tx_surname + ",c." + DB.tx_email + ",'+00:00' AS " + DB.tx_timezone,
                                      "c."+DB.tx_email+" IS NOT NULL AND c."+DB.gu_contact+"=x."+DB.gu_contact+" AND x."+DB.gu_meeting+"=?", 10);
                      oFlws.load(oCon, new Object[]{oMeet.getString(DB.gu_meeting)});
                      oCnts.load(oCon, new Object[]{oMeet.getString(DB.gu_meeting)});
                      oFlws.union(oCnts);
                      oBuf.append("<attendants count=\""+String.valueOf(oFlws.getRowCount())+"\">");
                      for (int f=0; f<oFlws.getRowCount(); f++) {
                        oBuf.append("<attendant>");
                        oBuf.append("<id>"+oFlws.getStringNull(1,f,"")+"</id>");
                        oBuf.append("<gu>"+oFlws.getString(0,f)+"</gu>");
                        oBuf.append("<name>"+oFlws.getStringNull(2,f,"")+"</name>");
                        oBuf.append("<surname>"+oFlws.getStringNull(3,f,"")+"</surname>");
                        oBuf.append("<email>"+oFlws.getStringNull(4,f,"")+"</email>");
                        oBuf.append("<timezone>"+oFlws.getStringNull(5,f,"")+"</timezone>");
                        oBuf.append("</attendant>");
                      }
                      oBuf.append("</attendants>");
            oBuf.append("</meeting></meetings></calendarresponse>");
          } else {
                      oBuf.append("<calendarresponse command=\"getMeeting\" code=\"0\"><error></error><value>false</value><meetings/></calendarresponse>");
          }
                  oRst.close();
                  oStm.close();
                  oCon.close("HttpCalendarServlet.getmeeting");
                response.setContentType("text/xml");
                response.setCharacterEncoding("UTF-8");
                response.getWriter().print(oBuf.toString());
            } catch (SQLException sqle) {
                  try { if (oCon!=null) if (!oCon.isClosed()) oCon.close("HttpCalendarServlet.getmeeting"); } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
            return;
                }
          }
        } else if (sCmd.equalsIgnoreCase("storeMeeting")) {
          if (null==sMeet) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter meeting is required");
          } else if (null==request.getParameter("title")) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter title is required");
          } else {
            String[] aRooms = null;
          String sRooms = request.getParameter("rooms");
          if (sRooms!=null) if (sRooms.length()>0) aRooms = Gadgets.split(sRooms,',');
            try {
              oCon = oDbb.getConnection("HttpCalendarServlet.storemeeting",false);
          if (null!=aRooms) {
            boolean bExists;
            short iAvailable = 0;
            PreparedStatement oAct = oCon.prepareStatement("SELECT "+DB.bo_available+" FROM "+DB.k_rooms+" WHERE "+DB.gu_workarea+"=? AND "+DB.nm_room+"=?");
            for (int v=0; v<aRooms.length; v++) {
              oAct.setString (1,sWrkA);
              oAct.setString (2, aRooms[v]);
              ResultSet oRct = oAct.executeQuery();
              bExists = oRct.next();
              if (bExists) iAvailable = oRct.getShort(1);
              oRct.close();
              if (!bExists) {
                      oAct.close();
                      oCon.close("HttpCalendarServlet.storemeeting");
                        oBuf.append("<calendarresponse command=\"storeMeeting\" code=\"-100\"><error>Room "+aRooms[v]+" was not found at WorkArea "+sWrkA+"</error><value>false</value><meetings count=\"0\"></meetings></calendarresponse>");
                    response.setContentType("text/xml");
                    response.setCharacterEncoding("UTF-8");
                    response.getWriter().print(oBuf.toString());
                return;
              } else if (0==iAvailable) {
                      oAct.close();
                      oCon.close("HttpCalendarServlet.storemeeting");
                        oBuf.append("<calendarresponse command=\"storeMeeting\" code=\"-101\"><error>Room "+aRooms[v]+" is not available for booking</error><value>false</value><meetings count=\"0\"></meetings></calendarresponse>");
                    response.setContentType("text/xml");
                    response.setCharacterEncoding("UTF-8");
                    response.getWriter().print(oBuf.toString());
                return;
              }
            } // next
            oAct.close();
          } // fi
          oCon.setAutoCommit(false);
          Meeting oMeet = new Meeting();
          PreparedStatement oStm = oCon.prepareStatement("SELECT "+DB.gu_meeting+" FROM "+DB.k_meetings+" WHERE "+DB.gu_workarea+"=? AND ("+DB.gu_meeting+"=? OR "+DB.id_icalendar+"=?)", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
          oStm.setString(1, sWrkA);
          oStm.setString(2, sMeet);
          oStm.setString(3, sMeet);
          ResultSet oRst = oStm.executeQuery();         
          if (oRst.next()) {
            oMeet.load(oCon, oRst.getString(1));
                    oRst.close();
                    oStm.close();
                      if (null!=sDtStart) oMeet.replace(DB.dt_start, oFmt.parse(sDtStart));
                      if (null!=sDtEnd) oMeet.replace(DB.dt_end, oFmt.parse(sDtEnd));           
            if (null!=sDtStart && null!=sDtEnd)
              if (oFmt.parse(sDtStart).getTime()>oFmt.parse(sDtEnd).getTime())
                throw new IllegalArgumentException("Start date must be prior to end date");
            if (null!=request.getParameter("type"))
              oMeet.replace(DB.tp_meeting, request.getParameter("type"));
            if (null!=request.getParameter("privacy"))
              oMeet.replace(DB.bo_private, Short.parseShort(request.getParameter("privacy")));
            oMeet.replace(DB.tx_meeting, Gadgets.left(request.getParameter("title"),100));
            if (null!=request.getParameter("description"))
              oMeet.replace(DB.de_meeting, Gadgets.left(request.getParameter("description"),1000));           
            oMeet.store(oCon);
          } else {
                    oRst.close();
                    oStm.close();
                    oMeet.put(DB.gu_meeting, Gadgets.generateUUID());
                    oMeet.put(DB.id_icalendar, sMeet);
                    oMeet.put(DB.id_domain, DBCommand.queryInt(oCon, "SELECT "+DB.id_domain+" FROM "+DB.k_workareas+" WHERE "+DB.gu_workarea+"='"+sWrkA+"'"));
                    oMeet.put(DB.gu_workarea, sWrkA);
                    oMeet.put(DB.gu_fellow, sUid);
                    oMeet.put(DB.gu_writer, sUid);
                      oMeet.put(DB.dt_start, oFmt.parse(sDtStart));
                      oMeet.put(DB.dt_end, oFmt.parse(sDtEnd));
            if (null!=request.getParameter("type"))
              oMeet.put(DB.tp_meeting, request.getParameter("type"));
            if (null!=request.getParameter("privacy"))
              oMeet.put(DB.bo_private, Short.parseShort(request.getParameter("privacy")));
            oMeet.put(DB.tx_meeting, Gadgets.left(request.getParameter("title"),100));
            if (null!=request.getParameter("description"))
              oMeet.put(DB.de_meeting, Gadgets.left(request.getParameter("description"),1000));
            oMeet.store(oCon);
          }

          oMeet.clearRooms(oCon);
          if (aRooms!=null) {
            PreparedStatement oPrm = oCon.prepareStatement("INSERT INTO "+DB.k_x_meeting_room+" ("+DB.gu_meeting+","+DB.nm_room+","+DB.dt_start+","+DB.dt_end+") VALUES (?,?,?,?)");
            for (int a=0; a<aRooms.length; a++) {
              oPrm.setString(1, oMeet.getString(DB.gu_meeting));
              oPrm.setString(2, aRooms[a]);
              oPrm.setTimestamp(3, new Timestamp(oMeet.getDate(DB.dt_start).getTime()));
              oPrm.setTimestamp(4, new Timestamp(oMeet.getDate(DB.dt_end).getTime()));
              oPrm.executeUpdate();
            } // next
            oPrm.close();
          } // fi

          oMeet.clearAttendants(oCon);
          boolean bSelf = false;
          String sAttendants = request.getParameter("attendants");
          if (sAttendants!=null) {
            if (sAttendants.length()>0) {
              String sGuFellow;
              String[] aAttendants = Gadgets.split(sAttendants,',');
              PreparedStatement oAtd = oCon.prepareStatement("SELECT * FROM "+DB.k_fellows+" WHERE "+DB.gu_workarea+"=? AND ("+DB.gu_fellow+"=? OR "+DB.tx_email+"=?)");
              for (int a=0; a<aAttendants.length; a++) {
                oAtd.setString(1, oMeet.getString(DB.gu_workarea));
                oAtd.setString(2, aAttendants[a]);
                oAtd.setString(3, aAttendants[a]);
                ResultSet oRtd = oAtd.executeQuery();
                if (oRtd.next())
                  sGuFellow = oRtd.getString(1);
                else
                  sGuFellow = null;
                oRtd.close();
                if (sGuFellow!=null) oMeet.addAttendant(oCon, sGuFellow);
              bSelf = sUid.equals(sGuFellow);
              } // next
              if (!bSelf) oMeet.addAttendant(oCon, sUid);             
              oAtd.close();
            } // fi
          } // fi
         
          oCon.commit();

                    oBuf.append("<calendarresponse command=\"storeMeeting\" code=\"0\"><error></error><value>true</value><meetings count=\"1\"><meeting type=\""+oMeet.getStringNull(DB.tp_meeting,"")+"\">");
                    oBuf.append("<id>"+oMeet.getStringNull(DB.id_icalendar,"")+"</id>");
                    oBuf.append("<gu>"+oMeet.getString(DB.gu_meeting)+"</gu>");
                    oBuf.append("<startdate>"+oXmt.format(oMeet.getDate(DB.dt_start)).replace(' ','T')+"</startdate>");
                    oBuf.append("<enddate>"+oXmt.format(oMeet.getDate(DB.dt_end)).replace(' ','T')+"</enddate>");
                    if (oMeet.isNull(DB.bo_private))
                      oBuf.append("<privacy>0</privacy>");
                    else
                      oBuf.append("<privacy>"+String.valueOf(oMeet.getShort(DB.bo_private))+"</privacy>");
                    oBuf.append("<title>"+oMeet.getStringNull(DB.tx_meeting,"")+"</title>");
                    oBuf.append("<description>"+oMeet.getStringNull(DB.de_meeting,"")+"</description>");
          Fellow oOrg = new Fellow(oCon, oMeet.getString(DB.gu_fellow));
                    oBuf.append("<organizer>");
                    oBuf.append("<id>"+oOrg.getStringNull(DB.id_ref,"")+"</id>");
                    oBuf.append("<gu>"+oOrg.getString(DB.gu_fellow)+"</gu>");
                    oBuf.append("<name>"+oOrg.getStringNull(DB.tx_name,"")+"</name>");
                    oBuf.append("<surname>"+oOrg.getStringNull(DB.tx_surname,"")+"</surname>");
                    oBuf.append("<email>"+oOrg.getStringNull(DB.tx_email,"")+"</email>");
                    oBuf.append("<timezone>"+oOrg.getStringNull(DB.tx_timezone,"")+"</timezone>");
                    oBuf.append("</organizer>");
              DBSubset oRomm = new DBSubset(DB.k_rooms+" r,"+DB.k_x_meeting_room+" m","r."+DB.tp_room+",r."+DB.nm_room+",r."+DB.tx_comments,
                                "r."+DB.gu_workarea+"=? AND m."+DB.gu_meeting+"=? AND r."+DB.nm_room+"=m."+DB.nm_room, 10);
            int nRomm = oRomm.load(oCon, new Object[]{sWrkA, oMeet.getString(DB.gu_meeting)});
                    oBuf.append("<rooms count=\""+String.valueOf(nRomm)+"\">");                 
                    for (int r=0; r<nRomm; r++) {
                      oBuf.append("<room type=\""+oRomm.getStringNull(0,r,"")+"\"><name>"+oRomm.getStringNull(1,r,"")+"</name><comments>"+oRomm.getStringNull(2,r,"")+"</comments></room>");
                    } // next
                    oBuf.append("</rooms>");
                    DBSubset oFlws = new DBSubset(DB.k_fellows +" f,"+DB.k_x_meeting_fellow +" x",
                                            "f." + DB.gu_fellow + ",f." + DB.id_ref + ",f." + DB.tx_name + ",f." + DB.tx_surname + ",f." + DB.tx_email + ",f." + DB.tx_timezone,
                                                  "f."+DB.tx_email+" IS NOT NULL AND f."+DB.gu_fellow+"=x."+DB.gu_fellow+" AND x."+DB.gu_meeting+"=?", 10);
                    DBSubset oCnts = new DBSubset(DB.k_member_address+" c,"+DB.k_x_meeting_contact+" x",
                                            "c." + DB.gu_contact + ",c." + DB.id_ref + ",c." + DB.tx_name + ",c." + DB.tx_surname + ",c." + DB.tx_email + ",'+00:00' AS " + DB.tx_timezone,
                                    "c."+DB.tx_email+" IS NOT NULL AND c."+DB.gu_contact+"=x."+DB.gu_contact+" AND x."+DB.gu_meeting+"=?", 10);
                    oFlws.load(oCon, new Object[]{oMeet.getString(DB.gu_meeting)});
                    oCnts.load(oCon, new Object[]{oMeet.getString(DB.gu_meeting)});
                    oFlws.union(oCnts);
                    oBuf.append("<attendants count=\""+String.valueOf(oFlws.getRowCount())+"\">");
                    for (int f=0; f<oFlws.getRowCount(); f++) {
                      oBuf.append("<attendant>");
                      oBuf.append("<id>"+oFlws.getStringNull(1,f,"")+"</id>");
                      oBuf.append("<gu>"+oFlws.getString(0,f)+"</gu>");
                      oBuf.append("<name>"+oFlws.getStringNull(2,f,"")+"</name>");
                      oBuf.append("<surname>"+oFlws.getStringNull(3,f,"")+"</surname>");
                      oBuf.append("<email>"+oFlws.getStringNull(4,f,"")+"</email>");
                      oBuf.append("<timezone>"+oFlws.getStringNull(5,f,"")+"</timezone>");
                      oBuf.append("</attendant>");
                    }
                    oBuf.append("</attendants>");
          oBuf.append("</meeting></meetings></calendarresponse>");

                  oCon.close("HttpCalendarServlet.storemeeting");
                response.setContentType("text/xml");
                response.setCharacterEncoding("UTF-8");
                response.getWriter().print(oBuf.toString());
            } catch (SQLException sqle) {
                  try { if (oCon!=null) if (!oCon.isClosed()) { if (!oCon.getAutoCommit()) oCon.rollback(); oCon.close("HttpCalendarServlet.storemeeting"); } } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
            return;
                } catch (NumberFormatException nfe) {
                  try { if (oCon!=null) if (!oCon.isClosed()) { if (!oCon.getAutoCommit()) oCon.rollback(); oCon.close("HttpCalendarServlet.storemeeting"); } } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, nfe.getMessage());
            return;
                } catch (ParseException dpe) {
                  try { if (oCon!=null) if (!oCon.isClosed()) { if (!oCon.getAutoCommit()) oCon.rollback(); oCon.close("HttpCalendarServlet.storemeeting"); } } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_BAD_REQUEST, dpe.getMessage());
            return;
                } catch (IllegalArgumentException iae) {
                  try { if (oCon!=null) if (!oCon.isClosed()) { if (!oCon.getAutoCommit()) oCon.rollback(); oCon.close("HttpCalendarServlet.storemeeting"); } } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_BAD_REQUEST, iae.getMessage());
            return;
            }
          }
        } else if (sCmd.equalsIgnoreCase("deleteMeeting")) {
          if (null==sMeet) {
                response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parameter meeting is requiered");
          } else {
            try {
              oCon = oDbb.getConnection("HttpCalendarServlet.deletemeeting",false);
          oCon.setAutoCommit(false);
          Meeting oMeet = new Meeting();
          PreparedStatement oStm = oCon.prepareStatement("SELECT "+DB.gu_meeting+" FROM "+DB.k_meetings+" WHERE "+DB.gu_workarea+"=? AND ("+DB.gu_meeting+"=? OR "+DB.id_icalendar+"=?)", ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
          oStm.setString(1, sWrkA);
          oStm.setString(2, sMeet);
          oStm.setString(3, sMeet);
          ResultSet oRst = oStm.executeQuery();         
          if (oRst.next()) {
            String sDlte = oRst.getString(1);
                    oRst.close();
                    oStm.close();
            boolean bDeleted = Meeting.delete(oCon, sDlte);
            oCon.commit();

                      oBuf.append("<calendarresponse command=\"deleteMeeting\" code=\"0\"><error></error><meetings count=\""+String.valueOf(bDeleted ? 1 : 0)+"\"><meeting>");
                      oBuf.append("<id>"+sMeet+"</id>");
                      oBuf.append("<gu>"+sDlte+"</gu>");
            oBuf.append("</meeting><meetings></calendarresponse>");

          } else {
                    oRst.close();
                    oStm.close();
                      oBuf.append("<calendarresponse command=\"deleteMeeting\" code=\"0\"><error></error><meetings count=\"0\"></meetings></calendarresponse>");
          }
                  oCon.close("HttpCalendarServlet.storemeeting");
                response.setContentType("text/xml");
                response.setCharacterEncoding("UTF-8");
                response.getWriter().print(oBuf.toString());
            } catch (SQLException sqle) {
                  try { if (oCon!=null) if (!oCon.isClosed()) { if (!oCon.getAutoCommit()) oCon.rollback(); oCon.close("HttpCalendarServlet.storemeeting"); } } catch (Exception ignore) { }
                  response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, sqle.getMessage());
            return;
                }
          }
        } else if (sCmd.equalsIgnoreCase("disconnect")) {
View Full Code Here

Examples of com.knowgate.jdc.JDCConnection

      DBSubset oMeetings = new DBSubset (DB.k_meetings + " m," + DB.k_x_meeting_fellow + " f",
                                         "m." + DB.gu_meeting + ",m." + DB.gu_fellow + ",m." + DB.tp_meeting + ",m." + DB.tx_meeting + ", m." + DB.dt_start + ",m." + DB.dt_end,
                                         "m." + DB.gu_meeting + "=f." + DB.gu_meeting + " AND f." + DB.gu_fellow + "=? AND m." + DB.dt_start + " BETWEEN ? AND ? ORDER BY m." + DB.dt_start, 10);

      JDCConnection oCon = null;

      try  {
        oCon = oDBB.getConnection("CalendarTab_today");

        oToDo.setMaxRows(Integer.parseInt(sMaxRows));
        iToDo = oToDo.load (oCon, new Object[]{sUserId});

        for (int a=0; a<iToDo; a++) {
          if (oToDo.getStringNull(2, a,"").length()>40)
            oToDo.setElementAt(oToDo.getString(2, a).substring(0, 40) +"...", 2,a);
        }

        sToDoXML = oToDo.toXML("", "activity");

        iMeetings = oMeetings.load(oCon, new Object[]{sUserId, new Timestamp(dt00.getTime()), new Timestamp(dt23.getTime())});

        for (int m=0; m<iMeetings; m++) {

          if (oMeetings.isNull(3,m)) oMeetings.setElementAt("untitled", 3,m);

          Date oFrom = oMeetings.getDate(4,m);
          oMeetings.setElementAt(String.valueOf(oFrom.getHours())+":"+Gadgets.leftPad(String.valueOf(oFrom.getMinutes()),'0',2), 4, m);

          Date oTo = oMeetings.getDate(5,m);
          oMeetings.setElementAt(String.valueOf(oTo.getHours())+":"+Gadgets.leftPad(String.valueOf(oTo.getMinutes()),'0',2), 5, m);
        }

        oCon.close("CalendarTab_today");
        oCon = null;

        sTodayXML = oMeetings.toXML("","meeting");
      }
      catch (SQLException e) {
        sToDoXML = "<todo></todo>";
        sTodayXML = "<today></today>";

        try {
          if (null != oCon)
            if (!oCon.isClosed())
              oCon.close("CalendarTab_today");
        } catch (SQLException ignore) { }
      }

      sXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<?xml-stylesheet type=\"text/xsl\"?>\n<calendar>\n";
      if (iToDo>0)
View Full Code Here

Examples of com.knowgate.jdc.JDCConnection

      // Get database connection from desktop.jsp page

      DBBind oDBB = (DBBind) getPortletContext().getAttribute("GlobalDBBind");

      JDCConnection oCon = null;

      try  {
        oCon = oDBB.getConnection("HelloWorld");

      String sFullName = DBCommand.queryStr(oCon, "SELECT "+DB.nm_user+",' ',"+DB.tx_surname1+" FROM "+DB.k_users+" WHERE '"+DB.gu_user+"='"+sUserId+"'");

        oCon.close("HelloWorld");
        oCon = null;

        sXML += "<FullName>"+sFullName+"</FullName>";
      }
      catch (SQLException e) {
        sXML += "<FullName/>";

        try {
          if (null != oCon)
            if (!oCon.isClosed())
              oCon.close("HelloWorld");
        } catch (SQLException ignore) { }
      }
    } // fi (WindowState)

    try {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.