private SourceBean setLineAttributes(KpiLine line,SourceBean semaphor, SourceBean textCodeName, SourceBean textValue,
SourceBean textWeight, SourceBean image1, int level, SourceBean separatorline,SourceBean threshCode,SourceBean threshValue, SourceBean extraimageToAdd){
logger.debug("IN");
KpiValue kpiValue=line.getValue();
ThresholdValue t = null;
Color colorSemaphor = null;
if ( kpiValue!=null && kpiValue.getValue() != null) {
t = kpiValue.getThresholdOfValue();
if(t!=null){
colorSemaphor = t.getColor();
}
}
Integer xValue=xStarter+(xIncrease*Integer.valueOf(level));
Integer yValue=actualHeight;
try {
//set Semaphor
semaphor.setAttribute("reportElement.x", xValue.toString());
semaphor.setAttribute("reportElement.y", new Integer(yValue.intValue()+2).toString());
if(colorSemaphor!=null){
String color=Integer.toHexString(colorSemaphor.getRGB());
color="#"+color.substring(2);
semaphor.setAttribute("reportElement.forecolor", "#000000");
semaphor.setAttribute("reportElement.backcolor", color);
}else{
semaphor.setAttribute("reportElement.forecolor", "#FFFFFF");
semaphor.setAttribute("reportElement.backcolor", "#FFFFFF");
}
xValue=xValue+semaphorWidth+separatorWidth;
// set text 1: Model CODE - Model NAME
textCodeName.setAttribute("reportElement.x", (xValue));
textCodeName.setAttribute("reportElement.y", yValue.toString());
SourceBean textValue1=(SourceBean)textCodeName.getAttribute("text");
textValue1.setCharacters(line.getModelInstanceCode()+"-"+line.getModelNodeName());
xValue=xValue+textWidth+separatorWidth;
//Set Value, weight and threshold code and value
if(kpiValue!=null){
String value1=kpiValue.getValue() != null ? kpiValue.getValue() : "";
//set text2
textValue.setAttribute("reportElement.y", yValue.toString());
SourceBean textValue2=(SourceBean)textValue.getAttribute("text");
textValue2.setCharacters(value1);
String weight=(kpiValue.getWeight()!=null) ? kpiValue.getWeight().toString() : "";
//set text2
xValue=xValue+numbersWidth+separatorWidth;
textWeight.setAttribute("reportElement.y", new Integer(yValue.intValue()+2).toString());
SourceBean textValue3=(SourceBean)textWeight.getAttribute("text");
textValue3.setCharacters(weight);
if(t!=null){
try {
Threshold tr = DAOFactory.getThresholdDAO().loadThresholdById(t.getThresholdId());
if (!thresholdsList.contains(tr)){
thresholdsList.add(tr);
}
} catch (EMFUserError e) {
logger.error("error in loading the Threshold by Id",e);
e.printStackTrace();
}
String code=t.getThresholdCode() != null ? t.getThresholdCode() : "";
String codeTh = "Code: "+code;
if(codeTh.length()>20)codeTh = codeTh.substring(0, 19);
threshCode.setAttribute("reportElement.y", new Integer(yValue.intValue()-2).toString());
SourceBean threshCode2=(SourceBean)threshCode.getAttribute("text");
threshCode2.setCharacters(codeTh);
String labelTh=t.getLabel() != null ? t.getLabel() : "";
String min = t.getMinValue()!= null ? t.getMinValue().toString() : null;
String max = t.getMaxValue()!= null ? t.getMaxValue().toString() : null;
String valueTh = "Value: ";
if(t.getThresholdType().equalsIgnoreCase("RANGE")){
if (min!=null && max !=null){
valueTh = valueTh + min+"-"+max+" "+labelTh;
}else if (min!=null && max==null){
valueTh = valueTh + "> "+min+" "+labelTh;
}else if (min==null && max!=null){
valueTh = valueTh + "< "+max+" "+labelTh;
}
}else if(t.getThresholdType().equalsIgnoreCase("MINIMUM")){
valueTh = valueTh + "< "+min+" "+labelTh;
}else if(t.getThresholdType().equalsIgnoreCase("MAXIMUM")){
valueTh = valueTh + "> "+max+" "+labelTh;
}
if(valueTh.length()>25)valueTh = valueTh.substring(0, 24);
threshValue.setAttribute("reportElement.y", new Integer(yValue.intValue()+7).toString());
SourceBean threshValue2=(SourceBean)threshValue.getAttribute("text");
threshValue2.setCharacters(valueTh);
}
}
//Sets the bullet chart and or the threshold image
if(options.getDisplay_bullet_chart() && options.getDisplay_threshold_image()){
//both threshold image and bullet chart have to be seen
if ( kpiValue!=null && kpiValue.getValue()!= null && kpiValue.getThresholdValues()!=null && !kpiValue.getThresholdValues().isEmpty()) {
List thresholdValues = kpiValue.getThresholdValues();
// String chartType = value.getChartType();
String chartType = "BulletGraph";
Double val = new Double(kpiValue.getValue());
Double target = kpiValue.getTarget();
ChartImpl sbi = ChartImpl.createChart(chartType);
sbi.setValueDataSet(val);
if (target != null) {
sbi.setTarget(target);
}
sbi.setShowAxis(options.getShow_axis());
sbi.setThresholdValues(thresholdValues);
JFreeChart chart = sbi.createChart();
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
String requestIdentity = null;
UUIDGenerator uuidGen = UUIDGenerator.getInstance();
UUID uuid = uuidGen.generateTimeBasedUUID();
requestIdentity = uuid.toString();
requestIdentity = requestIdentity.replaceAll("-", "");
String path_param = requestIdentity;
String dir=System.getProperty("java.io.tmpdir");
String path=dir+"/"+requestIdentity+".png";
java.io.File file1 = new java.io.File(path);
logger.debug("Where is the image: "+path);
try {
ChartUtilities.saveChartAsPNG(file1, chart, 89, 11, info);
} catch (IOException e) {
e.printStackTrace();
logger.error("Error in saving chart",e);
}
String urlPng=GeneralUtilities.getSpagoBiHost()+GeneralUtilities.getSpagoBiContext() + GeneralUtilities.getSpagoAdapterHttpUrl() +
"?ACTION_NAME=GET_PNG2&NEW_SESSION=TRUE&path="+path_param+"&LIGHT_NAVIGATOR_DISABLED=TRUE";
urlPng = "new java.net.URL(\""+urlPng+"\")";
logger.debug("Image url: "+urlPng);
image1.setAttribute("reportElement.y", yValue.toString());
image1.setAttribute("reportElement.x", new Integer(310).toString());
image1.setAttribute("reportElement.width", 90);
SourceBean imageValue=(SourceBean)image1.getAttribute("imageExpression");
imageValue.setCharacters(urlPng);
}
ThresholdValue tOfVal = line.getThresholdOfValue();
if (tOfVal!=null && tOfVal.getPosition()!=null && tOfVal.getThresholdCode()!=null){
String fileName ="position_"+tOfVal.getPosition().intValue();
String dirName = tOfVal.getThresholdCode();
String urlPng=GeneralUtilities.getSpagoBiHost()+GeneralUtilities.getSpagoBiContext() + GeneralUtilities.getSpagoAdapterHttpUrl() +
"?ACTION_NAME=GET_THR_IMAGE&NEW_SESSION=TRUE&fileName="+fileName+"&dirName="+dirName+"&LIGHT_NAVIGATOR_DISABLED=TRUE";
urlPng = "new java.net.URL(\""+urlPng+"\")";
logger.debug("url: "+urlPng);
extraimageToAdd=new SourceBean(image);
extraimageToAdd.setAttribute("reportElement.y", yValue.toString());
extraimageToAdd.setAttribute("reportElement.width",35);
extraimageToAdd.setAttribute("reportElement.x", new Integer(408).toString());
SourceBean imageValue=(SourceBean)extraimageToAdd.getAttribute("imageExpression");
imageValue.setCharacters(urlPng);
}
}else if(options.getDisplay_bullet_chart() && !options.getDisplay_threshold_image()){
//only bullet chart has to be seen
if ( kpiValue!=null && kpiValue.getValue()!= null && kpiValue.getThresholdValues()!=null && !kpiValue.getThresholdValues().isEmpty()) {
List thresholdValues = kpiValue.getThresholdValues();
// String chartType = value.getChartType();
String chartType = "BulletGraph";
Double val = new Double(kpiValue.getValue());
Double target = kpiValue.getTarget();
ChartImpl sbi = ChartImpl.createChart(chartType);
sbi.setValueDataSet(val);
if (target != null) {
sbi.setTarget(target);
}