Java tutorial
/******************************************************************************* * Copyright (c) 2014 Development Gateway. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html *******************************************************************************/ /** * */ package org.devgateway.eudevfin.sheetexp.iati.transformer; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.nio.charset.Charset; import java.util.List; import org.devgateway.eudevfin.financial.CustomFinancialTransaction; import org.devgateway.eudevfin.sheetexp.dto.EntityWrapperInterface; import org.devgateway.eudevfin.sheetexp.iati.domain.IatiActivities; import org.devgateway.eudevfin.sheetexp.iati.domain.IatiActivity; import org.devgateway.eudevfin.sheetexp.iati.transformer.xmlutil.ExtendedXStream; import org.joda.time.DateTime; import org.joda.time.format.DateTimeFormatter; import org.joda.time.format.ISODateTimeFormat; import org.springframework.context.annotation.Lazy; import org.springframework.integration.annotation.Header; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.stereotype.Component; import com.google.common.collect.ImmutableMap; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.converters.basic.DateConverter; /** * @author alexandru-m-g * */ @Component @Lazy(value = false) public class IatiTransformer { /** * @deprecated Use createIatiExportManually instead * @return */ @Deprecated public Boolean createIatiExport(final List<EntityWrapperInterface<CustomFinancialTransaction>> list, @Header("outputStream") final OutputStream out, @Header("exportName") final String exportName) { final IatiTransformerEngine engine = new IatiTransformerEngine(list); final IatiActivities iatiActivities = engine.transform().getIatiActivities(); final DateTime now = new DateTime(); final ExtendedXStream xStream = new ExtendedXStream( ImmutableMap.of("generated-datetime", now.toString(), "version", "1.04")); xStream.processAnnotations(IatiActivities.class); xStream.registerConverter(new DateConverter("yyyy-MM-dd", new String[] {})); try (final ObjectOutputStream oos = xStream.createObjectOutputStream(out, "iati-activities")) { for (final IatiActivity iatiActivity : iatiActivities.getActivities()) { oos.writeObject(iatiActivity); } } catch (final IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } return true; } @ServiceActivator(inputChannel = "iatiListExporterChannel") public Boolean createIatiExportManually(final List<EntityWrapperInterface<CustomFinancialTransaction>> list, @Header("outputStream") final OutputStream out, @Header("exportName") final String exportName) { final IatiTransformerEngine engine = new IatiTransformerEngine(list); final IatiActivities iatiActivities = engine.transform().getIatiActivities(); final DateTimeFormatter formatter = ISODateTimeFormat.dateTimeNoMillis(); final DateTime now = new DateTime().millisOfSecond().withMinimumValue(); final XStream xStream = new XStream(); xStream.processAnnotations(IatiActivities.class); xStream.registerConverter(new DateConverter("yyyy-MM-dd", new String[] {})); try (final OutputStreamWriter writer = new OutputStreamWriter(out, Charset.forName("UTF-8"))) { writer.write(String.format("<iati-activities generated-datetime=\"%s\" version=\"1.04\">", formatter.print(now))); writer.write("<!-- Generated By EUDEVFIN -->"); for (final IatiActivity iatiActivity : iatiActivities.getActivities()) { final String xml = xStream.toXML(iatiActivity); writer.write(xml); } writer.write("</iati-activities>"); } catch (final IOException e) { // TODO Auto-generated catch block e.printStackTrace(); return false; } return true; } }