Jump to content
We've recently updated our Privacy Statement, available here ×

plapla

Members
  • Posts

    3
  • Joined

  • Last visited

plapla's Achievements

Rookie

Rookie (2/14)

  • Week One Done
  • One Month Later
  • One Year In
  • First Post Rare
  • Conversation Starter Rare

Recent Badges

0

Reputation

  1. Hi all , I have read in this topics we can count non-numeric values (http://jasperforge.org/plugins/espforum/view.php?group_id=102&forumid=103&topicid=1939). I have a table , done with extreme components, and with jasper reports i want to generate the pdf . it works fine. I want to count the number of non numeric values . It works if the column has numeric values , but not if it is string or boolean values . How can I do ? I dont have jrxml, then I work with JRVariable with setCalculation . THanks for a response .
  2. I m trying to instantiate percentage without jrxml. the users wants the percentage of cell not null in a column. Im working with a extreme component table and with jasper i want a pdf . I have writed a new class which extends JRAbstractExtendedIncrementerFactory It works well if i want to obtain the percent of cell not null in one column , but in two column it s not ok .Someone can help me, please ? Thanks Code:import java.math.BigDecimal;import java.sql.Timestamp;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import net.sf.jasperreports.engine.fill.AbstractValueProvider;import net.sf.jasperreports.engine.fill.JRAbstractExtendedIncrementer;import net.sf.jasperreports.engine.fill.JRAbstractExtendedIncrementerFactory;import net.sf.jasperreports.engine.fill.JRCalculable;import net.sf.jasperreports.engine.fill.JRDefaultIncrementerFactory;import net.sf.jasperreports.engine.fill.JRExtendedIncrementer; /** * nouvelleclasse pour implémenter le pourcentage non nulls * * */public class CPJRPourcentageIncrementerFactory extends JRAbstractExtendedIncrementerFactory{ protected static final Long ZERO = new Long(0); public JRExtendedIncrementer getExtendedIncrementer(byte calculation){ if ( calculation == CPJRVariable.CALCULATION_POURCENTAGEDISTINCT ) { return INCREMENTOR; } else { throw new UnsupportedOperationException( "CPJRLongIncrementerFactory can only do pourcenbtage distinct calculations" ); } } public static JRExtendedIncrementer INCREMENTOR = new JRAbstractExtendedIncrementer() { /** *on veut avoir (decomptenonnull/rowcount) */ public BigDecimal decomptenonnullValue ; public BigDecimal countValue ; public Object className =null ; public Object increment( JRCalculable variable, Object expressionValue, AbstractValueProvider valueProvider ) { Object result = variable.getIncrementedValue(); BigDecimal BigDecimalZero = new BigDecimal("0"); BigDecimal BigDecimalUn = new BigDecimal("1"); if (decomptenonnullValue ==null) { decomptenonnullValue=BigDecimalZero; } if (countValue ==null) { countValue=BigDecimalZero; } if (expressionValue != null) //|| expressionValue!=CPJRLongIncrementerFactory.ZERO) { className = expressionValue.getClass(); decomptenonnullValue= decomptenonnullValue.add(BigDecimalUn) ; } countValue=countValue.add(BigDecimalUn) ; if (countValue.longValue()>0 &&className!=null){ System.out.println(decomptenonnullValue); System.out.println(countValue); System.out.println("(decomptenonnullValue/ countValue)*100"); BigDecimal result1 = new BigDecimal("0"); result1 = (decomptenonnullValue.divide(countValue,2,BigDecimal.ROUND_HALF_UP)); result1=result1.multiply(new BigDecimal("100")); System.out.println((result1)); if (java.math.BigDecimal.class.equals(className)) { result= result1; } else if ( java.lang.Number.class.equals(className) || java.lang.Double.class.equals(className) ) { result= result1.doubleValue(); } else if (java.lang.Float.class.equals(className)) { result= result1.floatValue(); } else if (java.lang.Long.class.equals(className)) { result= (result1.longValue()); } else if (java.lang.Integer.class.equals(className)) { result= result1.intValue(); } else if (java.lang.Short.class.equals(className)) { result= result1.shortValue();//ou exact?? } else if (java.lang.Byte.class.equals(className)) { result= result1.byteValue();//ou exact?? } else if (java.lang.Boolean.class.equals(className)) { result= result1.intValue();//ou exact?? result=new Boolean(result.toString()); } else if (java.lang.String.class.equals(className)) { result= result1.intValue();//ou exact?? result=new String(result.toString()); } else if (java.sql.Timestamp.class.equals(className)) { result= result1.intValue();//ou exact?? //SimpleDateFormat uneDateFormat = new SimpleDateFormat("dd"); //result=uneDateFormat.parse(result.toString()); result =new Timestamp(result1.longValue()); } } return result; } public Object initialValue() { decomptenonnullValue =new BigDecimal(0); countValue=new BigDecimal(0); return CPJRPourcentageIncrementerFactory.ZERO; } } ; }
  3. Hi all , I have read in this topics we can count non-numeric values (http://jasperforge.org/plugins/espforum/view.php?group_id=102&forumid=103&topicid=1939). I have a extreme components table and i use jasper reports for generating the table in pdf .( then we dont have jrxml) iN my code , I do that : decomptenonnulls: CALCULATION_COUNT); break; It works fine with numeric values but its doesn't work with string or boolean or date values .How can I do ?However , the users wants to calulate the percent of values non null in a column . Is it possible .I have tried to extend JRAbstractExtendedIncrementerFactory to do that , but in the method evaluate , jasper seems to want a string result for example if the values in the colum is string .How is it possible to do . Thank you very much . case cellVariable .setCalculation(JRDesignVariable.
×
×
  • Create New...