[HepData-svn] r1848 - trunk/hepdata-webapp/src/main/java/cedar/hepdata/formats

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Fri Mar 27 15:08:14 GMT 2015


Author: whalley
Date: Fri Mar 27 15:08:14 2015
New Revision: 1848

Log:
addition of JSON formatter - first attempt

Added:
   trunk/hepdata-webapp/src/main/java/cedar/hepdata/formats/JsonFormatter.java

Added: trunk/hepdata-webapp/src/main/java/cedar/hepdata/formats/JsonFormatter.java
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/hepdata-webapp/src/main/java/cedar/hepdata/formats/JsonFormatter.java	Fri Mar 27 15:08:14 2015	(r1848)
@@ -0,0 +1,183 @@
+package cedar.hepdata.formats;
+
+import cedar.hepdata.model.*;
+import cedar.hepdata.util.*;
+import cedar.hepdata.xml.*;
+import cedar.hepdata.db.*;
+import cedar.hepdata.webapp.components.*;
+
+
+import java.util.*;
+import java.text.*;
+import java.io.File;
+import java.io.*;
+
+import org.antlr.stringtemplate.*;
+
+import com.Ostermiller.util.SignificantFigures;
+
+
+public class JsonFormatter {
+
+    public static String format(Paper p) {
+	    StringBuffer s = new StringBuffer();
+        String s4="    ";
+        if(p == null) return null;
+        s.append("\"record\": {\n");
+ 
+        s.append(_headerXML(p));
+
+        String[] descs = { "description1" , "description2" , "description3" , "description4" };
+        String[] links = { "link1" , "link2" , "link3" , "link4" };
+        String[] ids = { p.getSpiresId().toString() , p.getInspireId().toString() ,  p.getRedId().toString() };
+        
+        for (int i=0; i<descs.length-1; i++){
+            for(int j=0; j<ids.length-1; j++){
+                String descfile = "/home/whalley/resource/" +ids[j] + "/" + descs[i];
+                String linkfile = "/home/whalley/resource/" +ids[j] + "/" + links[i];
+                File testdesc = new File(descfile);
+                File testlink = new File(linkfile);
+                String desc="";
+                String link="";
+                if(testdesc.exists() && testlink.exists() ){
+                    try {
+                        BufferedReader in = new BufferedReader(new FileReader(descfile));
+                        desc=in.readLine();	    
+                    } 
+                    catch (IOException e){}
+                    try {
+                        BufferedReader in = new BufferedReader(new FileReader(linkfile));
+                        link=in.readLine();	    
+                    } 
+                    catch (IOException e){}
+                    s.append(s4+"\"extra\" : {\n");
+                    s.append(s4+s4+"\"description\" : \""+desc+"\"\n");
+                    s.append(s4+s4+"\"link\" : \""+link+"\"\n");
+                    s.append(s4+"}\n");
+                } 
+            }
+        }
+
+        for (int j=0; j<ids.length-1; j++){
+            String insertfile = "/home/whalley/resource/" +ids[j] + "/insert.html";
+            File testinsert = new File(insertfile);
+            String insert="";
+            if(testinsert.exists()){
+                s.append(s4+"\"inserthtml\": \"/resource/"+ids[j]+"/insert.html\"\n");
+            }
+        }
+     
+        for (Dataset ds : p.getDatasets()){
+            s.append(s4+"\"dataset\": {\n");
+            s.append(_metadataXML(ds));
+            s.append(s4+"}\n");
+        }
+ 
+        s.append(_footerXML());
+ 
+        s.append("}\n");
+        return s.toString();
+    }
+ 
+    public static String _getTimestamp(){
+        DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+        Date date = new Date();
+        return dateFormat.format(date);
+    }
+
+
+    public static String _headerXML(Paper p) {
+        String s4="    ";
+        StringBuffer s = new StringBuffer();
+        s.append(s4+"\"inspireid\": \""+p.getInspireId()+"\"\n");
+        if(p.getArchive()!=null) { s.append(s4+"\"archive\": \""+p.getArchive().replaceAll("ARXIV","arXiv")+"\"\n"); }
+        s.append(s4+"\"dateupdated\": \""+p.getDateUpdated()+"\"\n");
+        s.append(s4+"\"collaboration\": \""+p.getInformalName()+"\"\n");
+        for (String comment : p.getComments()){ 
+             s.append("    \"comment\": \""+comment+"\",\n");
+        }
+        return s.toString();
+    }
+
+    public static String _footerXML() {
+        StringBuffer s = new StringBuffer();
+        return s.toString();
+    }
+
+    public static String _metadataXML(Dataset ds){  
+        String s4="    ";
+        StringBuffer s = new StringBuffer();
+        int idbase=9000000;
+        int id=idbase+ds.getId();
+        String location = "";
+        Paper p = ds.getPaper();
+       
+        for (String ct : ds.getComments()){
+            if(ct.startsWith("Location:")) { 
+                location = ct.replaceFirst("Location:","");
+                s.append(s4+s4+"\"label\": \""+ct.replaceFirst("Location:","Data from")+" from: "+p.getTitle()+"\"\n"); 
+            }
+        }
+
+        for (String ct : ds.getComments()){
+            if(!ct.startsWith("Location:")) {
+                s.append(s4+s4+"\"comment\": \""+ct.replaceFirst("VERBATIM","").replaceAll(">",">").replaceAll("<","<")+"\"\n");
+            }
+        }
+
+        for (String dsreac : ds.getDsReactions()){
+            s.append(s4+s4+"\"reackey\": \""+dsreac+"\"\n");
+        }
+        for (String dsobs : ds.getDsObservables()){
+            s.append(s4+s4+"\"obskey\": \""+dsobs+"\"\n");
+        }
+        for (String dsplab : ds.getDsPlabs()){
+            s.append(s4+s4+"\"plabkey\": \""+dsplab+"\"\n");
+        }
+
+        for (XAxis xax : ds.getXAxes()){
+            s.append(s4+s4+"\"xaxis\": {\n");
+            s.append(s4+s4+s4+"\"xheader\": \""+xax.getHeader()+"\"\n");
+            for (Bin bin : xax.getBins()){
+                s.append(s4+s4+s4+"\"bin\": {\n");
+                s.append(s4+s4+s4+s4+"\"id\": \""+bin.getId()+"\"\n");
+                s.append(s4+s4+s4+s4+"\"relation\": \""+bin.getRelation()+"\"\n");
+                s.append(s4+s4+s4+s4+"\"focus\": \""+bin.getFocus()+"\"\n");
+                s.append(s4+s4+s4+s4+"\"high\": \""+bin.getHighValue()+"\"\n");
+                s.append(s4+s4+s4+s4+"\"low\": \""+bin.getLowValue()+"\"\n");
+                if(bin.getDescription() != null ) { s.append(s4+s4+s4+s4+"\"description\": \""+bin.getDescription()+"\"\n"); }
+                s.append(s4+s4+s4+"}\n");
+            }
+            s.append(s4+s4+"}\n");
+        }
+
+        for (YAxis yax : ds.getYAxes()){
+            s.append(s4+s4+"\"yaxis\": {\n");
+            s.append(s4+s4+s4+"\"yheader\": \""+yax.getHeader()+"\"\n");
+            for (Property prop : yax.getProperties()){
+                s.append(s4+s4+s4+"\"property\": \""+prop.getFull()+"\"\n");
+            }
+            for (String comment : yax.getComments()){
+                s.append(s4+s4+s4+"\"comment\": \""+comment+"\"\n");
+            }
+            for (Point point : yax.getPoints()){
+                s.append(s4+s4+s4+"\"point\": {\n");
+                s.append(s4+s4+s4+s4+"\"id\": \""+point.getId()+"\"\n");
+                s.append(s4+s4+s4+s4+"\"value\": \""+point.getValue()+"\"\n");
+                for(PointError error : point.getErrors()){
+                    s.append(s4+s4+s4+s4+"\"error\": {\n");
+                    s.append(s4+s4+s4+s4+s4+"\"plus\": \""+error.getPlus()+"\"\n");
+                    s.append(s4+s4+s4+s4+s4+"\"minus\": \""+error.getMinus()+"\"\n");
+                    s.append(s4+s4+s4+s4+s4+"\"norm\": \""+error.getNormType()+"\"\n");
+                    s.append(s4+s4+s4+s4+s4+"\"type\": \""+error.getSourceType()+"\"\n");
+                    
+                    s.append(s4+s4+s4+s4+"}\n");
+                }
+                s.append(s4+s4+s4+"}\n");
+            }
+
+            s.append(s4+s4+"}\n");
+        }
+        return s.toString();
+    }
+}


More information about the HepData-svn mailing list