|
[HepData-svn] r1378 - trunk/hepdata-webapp/src/main/java/cedar/hepdata/formatsblackhole at projects.hepforge.org blackhole at projects.hepforge.orgWed Aug 11 17:22:25 BST 2010
Author: whalley Date: Wed Aug 11 17:22:25 2010 New Revision: 1378 Log: new trial bdms formatter Modified: trunk/hepdata-webapp/src/main/java/cedar/hepdata/formats/BdmsFormatter.java Modified: trunk/hepdata-webapp/src/main/java/cedar/hepdata/formats/BdmsFormatter.java ============================================================================== --- trunk/hepdata-webapp/src/main/java/cedar/hepdata/formats/BdmsFormatter.java Wed Aug 11 17:18:16 2010 (r1377) +++ trunk/hepdata-webapp/src/main/java/cedar/hepdata/formats/BdmsFormatter.java Wed Aug 11 17:22:25 2010 (r1378) @@ -15,7 +15,6 @@ public static String format(Paper p) { if(p == null) return null; StringBuffer s = new StringBuffer(); - s.append("BDMS output:\n\n"); s.append("SC = " + p.getShortName() + ";" + " RED = " + p.getRedId() + ";\n"); for (int n=1; n<4; n++){ @@ -46,28 +45,184 @@ if(p.getSpiresId()!=null) s.append("IRN = " + p.getSpiresId() + ";\n"); for (Dataset ds : p.getDatasets()){ - s.append("\n" + ds.getTfpString() + "\n"); + StringBuffer h = new StringBuffer(); + + if(ds.getTfpString() != null){ + h.append(ds.getTfpString().replace("Location: ","") + "\n"); + } + String yn = ""; for (int n=1; ; n++){ - if(ds.getCommentString(n) != null){ s.append(ds.getCommentString(n) + "\n"); } + if(ds.getCommentString(n) != null){ h.append(ds.getCommentString(n) + "\n"); } else{ break; } } for (int n=1; ; n++){ - if(ds.getDsReactionString(n) != null){ s.append(ds.getDsReactionString(n) + "\n"); } + if(ds.getDsReactionString(n) != null){ h.append(ds.getDsReactionString(n) + "\n"); } else{ break; } } for (int n=1; ; n++){ - if(ds.getDsObservableString(n) != null){ s.append(ds.getDsObservableString(n) + "\n"); } + if(ds.getDsObservableString(n) != null){ h.append(ds.getDsObservableString(n) + "\n"); } else{ break; } } for (int n=1; ; n++){ - if(ds.getDsPlabString(n) != null){ s.append(ds.getDsPlabString(n) + "\n"); } + if(ds.getDsPlabString(n) != null){ h.append(ds.getDsPlabString(n) + "\n"); } else{ break; } } - s.append("\n" + ds.getXAxes().size() + "\n"); - s.append("\n" + ds.getYAxes().size() + "\n"); + + s.append("\n" + h.toString()); + int numpoints = ds.getNumPoints(); + int idmax = ds.getMaxPointId(); + int nyax = ds.getYAxes().size(); + int nxax = ds.getXAxes().size(); + if(nyax > 0 && nxax > 0) { + int nycomm = ds.getYAxis(1).getComments().size(); + int nyprop = ds.getYAxis(1).getProperties().size();; + for ( Property prop : ds.getYAxis(1).getProperties()){ + if(prop.getName().startsWith("sqrts")){ nyprop--; } + } + for (Property prop : ds.getProperties()){ + s.append("N = " + prop.getName() + " IN " + prop.getUnit().toString().toUpperCase()); + if(prop.getLowValue().equals(prop.getHighValue())){ + s.append("; V = " + prop.getLowValue() + ";\n"); + } else{ + s.append("; V = " + prop.getLowValue() + " TO " + prop.getHighValue() + ";\n"); + } + } + + String[][] store = new String[nyax][nycomm+nyprop+1]; + int nyhead=0; + for (int n=0; n<nyax; n++){ + List <String> storelist = new ArrayList(); + + YAxis yax = ds.getYAxis(n+1); + String yheader = ""; + if(yax.getHeader() != null){ + yheader = yax.getHeader(); + storelist.add("N = YN; V = " + yheader + ";\n"); + nyhead=1; + } + + for (String comm : yax.getComments()){ + if(comm.contains(":")){ + StringBuffer tempbuff = new StringBuffer(); + String left = comm.split("\\s*:\\s*")[0]; + String right = comm.split("\\s*:\\s*")[1]; + tempbuff.append("N = " + left + "; V = " + right + ";\n"); + storelist.add(tempbuff.toString()); + } else{ + nycomm =- 1; + } + } + for (Property prop : yax.getProperties()){ + if(!prop.getName().startsWith("sqrts")){ + StringBuffer tempbuff = new StringBuffer(); + tempbuff.append("N = " + prop.getName().trim()); + if(!prop.getUnit().toString().equals("num")) { tempbuff.append(" IN " + prop.getUnit().toString().toUpperCase()); } + if(prop.getLowValue().equals(prop.getHighValue())){ + tempbuff.append("; V = " + prop.getLowValue() + ";\n"); + } else{ + tempbuff.append("; V = " + prop.getLowValue() + " TO " + prop.getHighValue() + ";\n"); + } + storelist.add(tempbuff.toString()); + } + } + Collections.sort(storelist); + for (int i=0; i<storelist.size(); i++){ + store[n][i]=storelist.get(i); + } + } + // now check each property etc. for repetition across yaxes (very simple case first) + for (int i=0; i<nyprop+nycomm+nyhead; i++){ + Boolean same = true; + if(nyax > 1){ + for (int ny=0; ny<nyax-1; ny++){ + if(!store[ny][i].equals(store[ny+1][i])) { same = false; } + } + } + if(same) { s.append(store[0][i]); } + else{ + s.append(store[0][i]); + for(int ny=1; ny<nyax; ny++){ + String right = store[ny][i].split("V\\s=\\s")[1]; + s.append(right); + } + } + } + + + s.append("N ="); + for(XAxis xax : ds.getXAxes()){ + s.append(" " + xax.getHeader() + ";"); + } + s.append("\n"); + s.append("*F"); + for(XAxis xax : ds.getXAxes()){ + s.append(" V.;"); + } + for(YAxis yx : ds.getYAxes()){ + s.append(" Y.;"); + } + s.append("*\n"); + + for (int i=0; i<numpoints; i++){ + for( int nx=0; nx<ds.getXAxes().size(); nx++){ + try{ + if(ds.getXAxis(nx+1).getBin(i+1).getRelation() != Relation.EQUALS){ s.append(" " + ds.getXAxis(nx+1).getBin(i+1).getRelation().toString()); } + if(ds.getXAxis(nx+1).getBin(i+1).getFocus() != null){ + s.append(" " + ds.getXAxis(nx+1).getBin(i+1).getFocus()); + if(ds.getXAxis(nx+1).getBin(i+1).getLowValue() != null + && ds.getXAxis(nx+1).getBin(i+1).getHighValue() != null + && !ds.getXAxis(nx+1).getBin(i+1).getLowValue().equals(ds.getXAxis(nx+1).getBin(i+1).getHighValue())){ + s.append(" (BIN=" + ds.getXAxis(nx+1).getBin(i+1).getLowValue() + " TO " + ds.getXAxis(nx+1).getBin(i+1).getHighValue() + ")"); + } + } else { + if(ds.getXAxis(nx+1).getBin(i+1).getLowValue().equals(ds.getXAxis(nx+1).getBin(i+1).getHighValue())){ + s.append(" " + ds.getXAxis(nx+1).getBin(i+1).getLowValue()); + } else { + s.append(" " + ds.getXAxis(nx+1).getBin(i+1).getLowValue() + " TO " + ds.getXAxis(nx+1).getBin(i+1).getHighValue()); + } + } + } catch(Exception e){ + System.out.println("Exception i=" + i + " nx=" + nx); + } + s.append(";"); + } + for (int n=0; n<nyax; n++){ + YAxis yax = ds.getYAxis(n+1); + try{ + if(yax.getPoint(i+1).getRelation() != Relation.EQUALS){ s.append(" " + yax.getPoint(i+1).getRelation().toString()); } + s.append(" " + yax.getPoint(i+1).getValue()); + int nerr=0; + for(Uncertainty err : yax.getPoint(i+1).getErrors()){ + nerr++; + String norm = ""; + if(err.getNormType() == ErrorNorm.PCT){ norm = " PCT"; } + if(nerr == 1) { + if(err.isSymmetric()){ s.append(" +- " + err.getPlus() + norm); } + else{s.append(" +" + err.getPlus() + norm + ",-" + err.getMinus() + norm);} + } + else if(nerr == 2) { + s.append(" (DSYS="); + if(err.isSymmetric()) {s.append(err.getPlus() + norm);} + else{s.append("+" + err.getPlus() + norm + ",-" + err.getMinus() + norm);} + } + else { + s.append(",DSYS="); + if(err.isSymmetric()) {s.append(err.getPlus() + norm);} + else{s.append("+" + err.getPlus() + norm + ",-" + err.getMinus() + norm);} + } + } + if(nerr > 1) { s.append(")");} + } + catch(Exception e){ s.append(" - "); } + s.append(";"); + } + s.append("\n"); + } + s.append("*CF *\n"); + } } - + s.append("*E\n"); return s.toString(); }
More information about the HepData-svn mailing list |