Skip to content

Commit

Permalink
template styles reports, audit logs report, user list
Browse files Browse the repository at this point in the history
  • Loading branch information
garbika committed Feb 27, 2014
1 parent d6dddc8 commit 9c0ff0a
Show file tree
Hide file tree
Showing 6 changed files with 105 additions and 42 deletions.
Expand Up @@ -125,10 +125,11 @@
</staticText>
<textField>
<reportElement uuid="28bb9b47-a69c-48e1-9073-d54d926242e8" style="Page header" isPrintRepeatedValues="false" x="110" y="145" width="644" height="20"/>

<textElement verticalAlignment="Middle">
<font isBold="false"/>
</textElement>
<textFieldExpression><![CDATA[$P{eventDescription}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{eventType} != null ? $P{eventDescription} : "All"]]></textFieldExpression>
</textField>
</band>
</title>
Expand Down Expand Up @@ -347,13 +348,11 @@
odo.delta as delta
from RObjectDeltaOperation as odo
join odo.record as aer
where ($P{eventType} = -1 or aer.eventType = $P{eventType}) and aer.timestamp &gt;= $P{from} and aer.timestamp &lt;= $P{to}
where ($P{eventType} = null or aer.eventType = $P{eventType}) and aer.timestamp &gt;= $P{from} and aer.timestamp &lt;= $P{to}
order by aer.timestamp
</r:hqlQuery>
<r:from>2000-01-01T00:00:00</r:from>
<r:to>2020-12-31T00:00:00</r:to>
<r:eventType>-1</r:eventType>
<r:eventDescription>All</r:eventDescription>
</configuration>
<!-- report parameters configuration schema sample with different options -->
<configurationSchema>
Expand Down Expand Up @@ -411,7 +410,7 @@

<xsd:simpleType name="EventType">
<xsd:restriction base="xsd:int">
<xsd:enumeration value="-1">
<xsd:enumeration value="null">
<xsd:annotation>
<xsd:appinfo>All</xsd:appinfo>
</xsd:annotation>
Expand Down
Expand Up @@ -59,18 +59,6 @@
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
<property name="net.sf.jasperreports.export.pdf.force.linebreak.policy" value="true"/>
<property name="net.sf.jasperreports.export.csv.exclude.origin.band.1" value="title"/>
<style fontName="DejaVu Sans" fontSize="10" hAlign="Left" isDefault="true" isPdfEmbedded="true"
name="Base" pdfEncoding="Identity-H" pdfFontName="DejaVuSans.ttf" vAlign="Middle">
</style>
<style backcolor="#267994" fontSize="26" forecolor="#FFFFFF" isDefault="false"
mode="Opaque" name="Title" style="Base"/>
<style fontSize="12" forecolor="#000000" isDefault="false" name="Page header"
style="Base"/>
<style backcolor="#333333" fontSize="12" forecolor="#FFFFFF" hAlign="Center"
isDefault="false" mode="Opaque" name="Column header" style="Base"/>
<style isBold="false" isDefault="false" name="Detail" style="Base"/>
<style fontSize="9" forecolor="#000000" isDefault="false" name="Page footer"
style="Base"/>
<parameter name="role" class="net.sf.jasperreports.engine.JasperReport" isForPrompting="false"/>
<parameter name="org" class="net.sf.jasperreports.engine.JasperReport" isForPrompting="false"/>
<parameter name="account" class="net.sf.jasperreports.engine.JasperReport" isForPrompting="false"/>
Expand Down Expand Up @@ -278,6 +266,28 @@
</pageFooter>
</jasperReport>
</template>
<templateStyle>
<jasperTemplate xmlns="http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd">
<style fontSize="10" hAlign="Left" isDefault="true" isPdfEmbedded="false" name="Base"
pdfEncoding="Cp1252"
pdfFontName="Helvetica"
vAlign="Middle"/>
<style backcolor="#267994" fontSize="26" forecolor="#FFFFFF" isDefault="false"
mode="Opaque"
name="Title"
style="Base"/>
<style fontSize="12" forecolor="#000000" isDefault="false" name="Page header"
style="Base"/>
<style backcolor="#333333" fontSize="12" forecolor="#FFFFFF" hAlign="Center"
isDefault="false"
mode="Opaque"
name="Column header"
style="Base"/>
<style isBold="false" isDefault="false" name="Detail" style="Base"/>
<style fontSize="9" forecolor="#000000" isDefault="false" name="Page footer"
style="Base"/>
</jasperTemplate>
</templateStyle>
<orientation>landscape</orientation>
<export>pdf</export>
<!-- set to true if report needs hibernate session (e.g. hql query is used) -->
Expand Down
Expand Up @@ -3,6 +3,8 @@

import java.awt.Color;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
Expand All @@ -16,7 +18,9 @@

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExpression;
import net.sf.jasperreports.engine.JRReportTemplate;
import net.sf.jasperreports.engine.JRStyle;
import net.sf.jasperreports.engine.JRTemplate;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.base.JRBasePen;
Expand All @@ -42,14 +46,12 @@
import net.sf.jasperreports.engine.type.VerticalAlignEnum;
import net.sf.jasperreports.engine.type.WhenNoDataTypeEnum;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.xml.JRXmlTemplateLoader;
import net.sf.jasperreports.web.servlets.ReportServlet;

import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;


import com.evolveum.midpoint.model.api.ModelService;
import com.evolveum.midpoint.prism.Containerable;
import com.evolveum.midpoint.prism.PrismContainer;
import com.evolveum.midpoint.prism.PrismContainerDefinition;
Expand All @@ -72,8 +74,8 @@
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ObjectType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ReportConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ReportFieldConfigurationType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ReportTemplateStyleType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.ReportType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.SubreportType;
import com.evolveum.midpoint.xml.ns._public.common.common_2a.XmlSchemaType;
import com.evolveum.prism.xml.ns._public.types_2.ObjectDeltaType;

Expand All @@ -87,10 +89,10 @@ public class ReportUtils {
private static String PARAMETER_OBJECT_TYPE = "type";
private static String PARAMETER_QUERY_FILTER = "filter";



// parameter for design
private static String PARAMETER_LOGO = "logoPath";
private static String PARAMETER_TEMPLATE_STYLES = "baseTemplateStyles";
private static String TEMPLATE_STYLE_SCHEMA = "<!DOCTYPE jasperTemplate PUBLIC \"-//JasperReports//DTD Template//EN\" \"http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd\">";

private static final Trace LOGGER = TraceManager
.getTrace(ReportUtils.class);
Expand Down Expand Up @@ -236,8 +238,18 @@ public static JasperReport getJasperReport(ReportType reportType, PrismContaine
LOGGER.trace("load jasper design : {}", jasperDesign);
}

if (reportType.getTemplateStyle() != null)
{
JRDesignReportTemplate templateStyle = new JRDesignReportTemplate(new JRDesignExpression("$P{" + PARAMETER_TEMPLATE_STYLES + "}"));
jasperDesign.addTemplate(templateStyle);
JRDesignParameter parameter = new JRDesignParameter();
parameter.setName(PARAMETER_TEMPLATE_STYLES);
parameter.setValueClass(JRTemplate.class);
jasperDesign.addParameter(parameter);
}
jasperReport = JasperCompileManager.compileReport(jasperDesign);


} catch (JRException ex){
LOGGER.error("Couldn't create jasper report design {}", ex.getMessage());
throw ex;
Expand All @@ -250,8 +262,30 @@ public static JasperReport getJasperReport(ReportType reportType, PrismContaine
public static Map<String, Object> getReportParams(ReportType reportType, PrismContainer<Containerable> parameterConfiguration, PrismSchema reportSchema, OperationResult parentResult)
{
Map<String, Object> params = new HashMap<String, Object>();
ReportTemplateStyleType styleType = reportType.getTemplateStyle();


if (reportType.getTemplateStyle() != null)
{
String reportTemplateStyle = DOMUtil.serializeDOMToString((Node)reportType.getTemplateStyle().getAny());
//FUJ FUJ FUJ must be changed
int first = reportTemplateStyle.indexOf(">");
int last = reportTemplateStyle.lastIndexOf("<");
reportTemplateStyle = "<jasperTemplate>" + reportTemplateStyle.substring(first+1, last) + "</jasperTemplate>";
reportTemplateStyle = TEMPLATE_STYLE_SCHEMA + "\n" + reportTemplateStyle;
LOGGER.trace("Style template string {}", reportTemplateStyle);
InputStream inputStreamJRTX = new ByteArrayInputStream(reportTemplateStyle.getBytes());
try
{
JRTemplate templateStyle = JRXmlTemplateLoader.load(inputStreamJRTX);
params.put(PARAMETER_TEMPLATE_STYLES, templateStyle);
LOGGER.trace("Style template parameter {}", templateStyle);

} catch(Exception ex)
{
LOGGER.error("Error create style template parameter {}", ex.getMessage());
}

}
OperationResult subResult = parentResult.createSubresult("get report parameters");
if (parameterConfiguration != null)
{
Expand Down
Expand Up @@ -20,6 +20,7 @@
import static org.testng.AssertJUnit.assertEquals;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Calendar;
import java.util.Collection;
Expand All @@ -28,6 +29,11 @@
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.Duration;

import net.sf.jasperreports.engine.JRReportTemplate;
import net.sf.jasperreports.engine.JRTemplate;
import net.sf.jasperreports.engine.xml.JRXmlTemplateLoader;
import net.sf.jasperreports.web.servlets.ReportServlet;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.DirtiesContext;
Expand Down Expand Up @@ -1224,7 +1230,12 @@ public void test015CreateUserListReportFromFile() throws Exception {
result.computeStatus();
display("Result after good import", result);
TestUtil.assertSuccess("Import has failed (result)", result);


//InputStream inputStreamJRTX = new FileInputStream("src/test/resources/styles/styles_without_doc.jrtx");
//JRTemplate templateStyle = JRXmlTemplateLoader.load(inputStreamJRTX);
//JRTemplate templateStyle = JRXmlTemplateLoader.load(is);
//JRReportTemplate template = (JRReportTemplate) templateStyle;
//WHEN IMPORT USER LIST
TestUtil.displayWhen(TEST_NAME + " - import report user list");
importObjectFromFile(USERLIST_REPORT_FILE);
Expand Down
Expand Up @@ -125,10 +125,11 @@
</staticText>
<textField>
<reportElement uuid="28bb9b47-a69c-48e1-9073-d54d926242e8" style="Page header" isPrintRepeatedValues="false" x="110" y="145" width="644" height="20"/>

<textElement verticalAlignment="Middle">
<font isBold="false"/>
</textElement>
<textFieldExpression><![CDATA[$P{eventDescription}]]></textFieldExpression>
<textFieldExpression><![CDATA[$P{eventType} != null ? $P{eventDescription} : "All"]]></textFieldExpression>
</textField>
</band>
</title>
Expand Down Expand Up @@ -347,13 +348,11 @@
odo.delta as delta
from RObjectDeltaOperation as odo
join odo.record as aer
where ($P{eventType} = -1 or aer.eventType = $P{eventType}) and aer.timestamp &gt;= $P{from} and aer.timestamp &lt;= $P{to}
where ($P{eventType} = null or aer.eventType = $P{eventType}) and aer.timestamp &gt;= $P{from} and aer.timestamp &lt;= $P{to}
order by aer.timestamp
</r:hqlQuery>
<r:from>2000-01-01T00:00:00</r:from>
<r:to>2020-12-31T00:00:00</r:to>
<r:eventType>-1</r:eventType>
<r:eventDescription>All</r:eventDescription>
</configuration>
<!-- report parameters configuration schema sample with different options -->
<configurationSchema>
Expand Down Expand Up @@ -411,7 +410,7 @@

<xsd:simpleType name="EventType">
<xsd:restriction base="xsd:int">
<xsd:enumeration value="-1">
<xsd:enumeration value="null">
<xsd:annotation>
<xsd:appinfo>All</xsd:appinfo>
</xsd:annotation>
Expand Down
34 changes: 22 additions & 12 deletions model/report-impl/src/test/resources/reports/reportUserList.xml
Expand Up @@ -59,18 +59,6 @@
<property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>
<property name="net.sf.jasperreports.export.pdf.force.linebreak.policy" value="true"/>
<property name="net.sf.jasperreports.export.csv.exclude.origin.band.1" value="title"/>
<style fontName="DejaVu Sans" fontSize="10" hAlign="Left" isDefault="true" isPdfEmbedded="true"
name="Base" pdfEncoding="Identity-H" pdfFontName="DejaVuSans.ttf" vAlign="Middle">
</style>
<style backcolor="#267994" fontSize="26" forecolor="#FFFFFF" isDefault="false"
mode="Opaque" name="Title" style="Base"/>
<style fontSize="12" forecolor="#000000" isDefault="false" name="Page header"
style="Base"/>
<style backcolor="#333333" fontSize="12" forecolor="#FFFFFF" hAlign="Center"
isDefault="false" mode="Opaque" name="Column header" style="Base"/>
<style isBold="false" isDefault="false" name="Detail" style="Base"/>
<style fontSize="9" forecolor="#000000" isDefault="false" name="Page footer"
style="Base"/>
<parameter name="role" class="net.sf.jasperreports.engine.JasperReport" isForPrompting="false"/>
<parameter name="org" class="net.sf.jasperreports.engine.JasperReport" isForPrompting="false"/>
<parameter name="account" class="net.sf.jasperreports.engine.JasperReport" isForPrompting="false"/>
Expand Down Expand Up @@ -278,6 +266,28 @@
</pageFooter>
</jasperReport>
</template>
<templateStyle>
<jasperTemplate xmlns="http://jasperreports.sourceforge.net/dtds/jaspertemplate.dtd">
<style fontSize="10" hAlign="Left" isDefault="true" isPdfEmbedded="false" name="Base"
pdfEncoding="Cp1252"
pdfFontName="Helvetica"
vAlign="Middle"/>
<style backcolor="#267994" fontSize="26" forecolor="#FFFFFF" isDefault="false"
mode="Opaque"
name="Title"
style="Base"/>
<style fontSize="12" forecolor="#000000" isDefault="false" name="Page header"
style="Base"/>
<style backcolor="#333333" fontSize="12" forecolor="#FFFFFF" hAlign="Center"
isDefault="false"
mode="Opaque"
name="Column header"
style="Base"/>
<style isBold="false" isDefault="false" name="Detail" style="Base"/>
<style fontSize="9" forecolor="#000000" isDefault="false" name="Page footer"
style="Base"/>
</jasperTemplate>
</templateStyle>
<orientation>landscape</orientation>
<export>pdf</export>
<!-- set to true if report needs hibernate session (e.g. hql query is used) -->
Expand Down

0 comments on commit 9c0ff0a

Please sign in to comment.