Hi guys,

I have created a simple script that adding nodes to jackrabbit, the nodes came from two different sources MSSQL and MySQL database. The script has the task to check for modifications in the two databases and add, update or delete nodes if they are modified in database. i have a custom node type that i use.

Now my problem is that some times i get a bad node. the node have to look like this:

Title: *svn-book*
Summary: SVN book
Author: administrator
Creation date: 2010-03-09T00:00:00.000+01:00
Url frontend: /xxxSite/files/71/71BCE045-3648-47F3-ADCC-0BE981E5BDC4.pdf <http://test.ksoft.tv:8080/DenaroSite/files/71/71BCE045-3648-47F3-ADCC-0BE981E5BDC4.pdf> Url backend: /Desk?nodeid=728 <http://test.ksoft.tv:8080/CMSDesk?nodeid=728>
Type: Files
Extension: pdf
Tags: files, JR, test
Keywords: JR files test
Page title: JR files test
Page Description: JR files test

   * 728_documents.pdf
     Property
         o Mime type: application/pdf
         o Encoding: UTF-8
         o Data: 1671317
         o Last time: 2010-03-09T16:04:40.000+01:00

But i get this, without my node definition:

   * 728_documents.pdf
     Property
         o Mime type: application/pdf
         o Encoding: UTF-8
         o Data: 1671317
         o Last time: 2010-03-09T16:04:40.000+01:00


Code for update and delete:

String ID = res.getString("DocumentNodeID");
               String title = res.getString("NewsTitle");
String textdata = "<html xml:lang=\"it-IT\" lang=\"it-IT\" dir=\"ltr\"><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"/></head><body>";
               String subtitle = res.getString("NewsSummary");
               Date date = res.getDate("NewsReleaseDate");
               String author = res.getString("Author");
               textdata += res.getString("NewsText");
               textdata += "</body></html>";

               String pagetitle = res.getString("DocumentPageTitle");
               String pagekey = res.getString("DocumentPageKeyWords");
               String pagedesc =  res.getString("DocumentPageDescription");
               String tags = res.getString("DocumentTags");

               String url_path = res.getString("DocumentUrlPath");

               file_name =  ID + "_news.html";
               if (checkNodeExists(jsession, file_name))
               {
                   System.out.println("Update Kentico node: " + file_name);
System.out.println("Update fields: " + ID + " " + title + " " + subtitle + " " + date + " " + author);

File createTempFile = File.createTempFile(file_name, ".html");
                  // System.out.println(createTempFile.getName());

FileOutputStream fos = new FileOutputStream(createTempFile); BufferedOutputStream bos = new BufferedOutputStream(fos);
                   bos.write(textdata.getBytes());
                   bos.flush();

                   MimeTable mt = MimeTable.getDefaultTable();
String mimeType = mt.getContentTypeFor(createTempFile.getName());

                   if (mimeType == null)
                   {
                       mimeType = "application/octet-stream";
                   }
                   File f = new File(createTempFile.getPath());

String ext = f.getName().substring(f.getName().lastIndexOf(".")+1, f.getName().length()); Node fileNode = root.getNode(file_name);

                   fileNode.setProperty("xx:title", title);
                   fileNode.setProperty("xx:summary", subtitle);
                   Calendar javadate = Calendar.getInstance();
                   javadate.setTime(date);
                   fileNode.setProperty("xx:date", javadate);
                   fileNode.setProperty("xx:author", author);
fileNode.setProperty("xxurl_frontend", url_path + ".aspx"); fileNode.setProperty("xx:url_backend", "/Desk?nodeid=" + ID);
                   fileNode.setProperty("xx:type", "Files");
                   fileNode.setProperty("xx:extension", "html");

                   fileNode.setProperty("xx:tags", tags);
                   fileNode.setProperty("xx:keywords", pagekey);
                   fileNode.setProperty("xx:pagetitle", pagetitle);
                   fileNode.setProperty("xx:pagedescription", pagedesc);

                   Node resNode = fileNode.getNode("jcr:content");

                   resNode.setProperty("jcr:mimeType", mimeType);
                   resNode.setProperty("jcr:encoding", "UTF-8");
                   resNode.setProperty("jcr:data", new FileInputStream(f));
                   Calendar lastModified = Calendar.getInstance();
                   lastModified.setTimeInMillis(f.lastModified());
                   resNode.setProperty("jcr:lastModified", lastModified);
                   createTempFile.deleteOnExit();
                   jsession.save();

And for delete:

                       if (nodeType.equals("Files"))
                       {
System.out.println("Files delete check: " + rnode.getPath()); if(checkIfNodeExistsInDBfiles(sess, rnode.getPath()))
                           {
System.out.println("Skip: " + rnode.getPath() + " type: " + nodeType);
                           }
                           else
                           {
System.out.println("Delete: " + rnode.getPath() + " type: " + nodeType);
                               rnode.remove();
                               sess.save();
                               System.out.println("Session save (Files)");
                               flag = true;
                           }
                       }

If someone can help me please, is there a way with transactions or node lock to make a better way for adding and deleting nodes, am not very experience with jackrabbit so every suggestions is welcome, thanks.

SehaxX

Reply via email to