001 package com.khubla.pragmatach.plugin.jcr; 002 003 import javax.jcr.Node; 004 import javax.jcr.NodeIterator; 005 import javax.jcr.Property; 006 import javax.jcr.PropertyIterator; 007 import javax.jcr.Value; 008 009 import org.json.JSONObject; 010 011 import com.khubla.pragmatach.framework.api.PragmatachException; 012 013 /** 014 * @author tome 015 */ 016 public class PragmatachJCRToJSON { 017 /** 018 * Pretty simple; render all the properties to JSON 019 */ 020 public static String renderNodeProperties(Node node) throws PragmatachException { 021 try { 022 /* 023 * json 024 */ 025 final JSONObject jSONObject = new JSONObject(); 026 /* 027 * walk the properties 028 */ 029 final PropertyIterator propertyIterator = node.getProperties(); 030 while (propertyIterator.hasNext()) { 031 /* 032 * property 033 */ 034 final Property property = propertyIterator.nextProperty(); 035 /* 036 * name 037 */ 038 final String propertyName = property.getName(); 039 if (false == property.isMultiple()) { 040 jSONObject.put(propertyName, property.getValue().getString()); 041 } else { 042 final JSONObject containedObject = new JSONObject(); 043 int i = 0; 044 for (final Value v : property.getValues()) { 045 containedObject.put(Integer.toString(i++), v.getString()); 046 } 047 jSONObject.put(propertyName, containedObject); 048 } 049 } 050 return jSONObject.toString(); 051 } catch (final Exception e) { 052 throw new PragmatachException("Exception in render", e); 053 } 054 } 055 056 /** 057 * Pretty simple; render all the subnode names to JSON 058 */ 059 public static String renderSubnodeNames(Node node) throws PragmatachException { 060 try { 061 /* 062 * json 063 */ 064 final JSONObject jSONObject = new JSONObject(); 065 /* 066 * walk the nodes 067 */ 068 final NodeIterator nodeIterator = node.getNodes(); 069 while (nodeIterator.hasNext()) { 070 /* 071 * node 072 */ 073 final Node subNode = nodeIterator.nextNode(); 074 /* 075 * add 076 */ 077 jSONObject.put(subNode.getName(), subNode.getPath()); 078 } 079 return jSONObject.toString(); 080 } catch (final Exception e) { 081 throw new PragmatachException("Exception in render", e); 082 } 083 } 084 }