mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
Rework to client side transfer report, events are now richer. Also some more attributes added to the header.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@22731 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -772,7 +772,7 @@ public class TransferServiceImpl2 implements TransferService2
|
||||
logger.warn("Exception - unable to notify end transfer state", e);
|
||||
}
|
||||
|
||||
reportName += "_" + new SimpleDateFormat("yyyyMMddhhmmssSSSZ").format(new Date());
|
||||
reportName += "_" + new SimpleDateFormat("yyyyMMddhhmmssSSS").format(new Date());
|
||||
|
||||
try
|
||||
{
|
||||
|
@@ -2113,7 +2113,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
|
||||
}
|
||||
} // test async cancel
|
||||
|
||||
|
||||
/**
|
||||
* Test the transfer report.
|
||||
*
|
||||
@@ -2152,26 +2151,33 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
|
||||
* This needs to be committed before we can call transfer asycnc.
|
||||
*/
|
||||
String CONTENT_TITLE = "ContentTitle";
|
||||
String CONTENT_NAME_A = "Demo Node A";
|
||||
String CONTENT_NAME_B = "Demo Node B";
|
||||
String CONTENT_NAME_A = "Report Node A";
|
||||
String CONTENT_NAME_B = "Report Node B";
|
||||
Locale CONTENT_LOCALE = Locale.GERMAN;
|
||||
String CONTENT_STRING = "Hello";
|
||||
|
||||
NodeRef nodeRefA = null;
|
||||
NodeRef nodeRefB = null;
|
||||
NodeRef testFolder = null;
|
||||
|
||||
String targetName = "testTransferReport";
|
||||
|
||||
startNewTransaction();
|
||||
try
|
||||
{
|
||||
nodeRefA = nodeService.getChildByName(guestHome, ContentModel.ASSOC_CONTAINS, CONTENT_NAME_A);
|
||||
{
|
||||
String name = GUID.generate();
|
||||
ChildAssociationRef child = nodeService.createNode(guestHome, ContentModel.ASSOC_CONTAINS, QName.createQName(name), ContentModel.TYPE_FOLDER);
|
||||
testFolder = child.getChildRef();
|
||||
nodeService.setProperty(testFolder, ContentModel.PROP_TITLE, CONTENT_TITLE);
|
||||
nodeService.setProperty(testFolder, ContentModel.PROP_NAME, name);
|
||||
}
|
||||
|
||||
if(nodeRefA == null)
|
||||
{
|
||||
/**
|
||||
* Create a test node that we will read and write
|
||||
*/
|
||||
ChildAssociationRef child = nodeService.createNode(guestHome, ContentModel.ASSOC_CONTAINS, QName.createQName(GUID.generate()), ContentModel.TYPE_CONTENT);
|
||||
ChildAssociationRef child = nodeService.createNode(testFolder, ContentModel.ASSOC_CONTAINS, QName.createQName(GUID.generate()), ContentModel.TYPE_CONTENT);
|
||||
nodeRefA = child.getChildRef();
|
||||
nodeService.setProperty(nodeRefA, ContentModel.PROP_TITLE, CONTENT_TITLE);
|
||||
nodeService.setProperty(nodeRefA, ContentModel.PROP_NAME, CONTENT_NAME_A);
|
||||
@@ -2181,11 +2187,8 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
|
||||
writer.putContent(CONTENT_STRING);
|
||||
}
|
||||
|
||||
nodeRefB = nodeService.getChildByName(guestHome, ContentModel.ASSOC_CONTAINS, CONTENT_NAME_B);
|
||||
|
||||
if(nodeRefB == null)
|
||||
{
|
||||
ChildAssociationRef child = nodeService.createNode(guestHome, ContentModel.ASSOC_CONTAINS, QName.createQName(GUID.generate()), ContentModel.TYPE_CONTENT);
|
||||
ChildAssociationRef child = nodeService.createNode(testFolder, ContentModel.ASSOC_CONTAINS, QName.createQName(GUID.generate()), ContentModel.TYPE_CONTENT);
|
||||
nodeRefB = child.getChildRef();
|
||||
nodeService.setProperty(nodeRefB, ContentModel.PROP_TITLE, CONTENT_TITLE);
|
||||
nodeService.setProperty(nodeRefB, ContentModel.PROP_NAME, CONTENT_NAME_B);
|
||||
@@ -2211,12 +2214,13 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
|
||||
NodeRef transferReport = null;
|
||||
NodeRef transferDestReport = null;
|
||||
|
||||
/**
|
||||
* Step 1.
|
||||
* Call the transfer method. to get a failed transfer - orphan nodes exist
|
||||
*/
|
||||
setDefaultRollback(true);
|
||||
startNewTransaction();
|
||||
try
|
||||
{
|
||||
/**
|
||||
* Call the transfer method.
|
||||
*/
|
||||
{
|
||||
TestTransferCallback callback = new TestTransferCallback();
|
||||
Set<TransferCallback> callbacks = new HashSet<TransferCallback>();
|
||||
@@ -2225,6 +2229,111 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
|
||||
Set<NodeRef>nodes = new HashSet<NodeRef>();
|
||||
nodes.add(nodeRefA);
|
||||
nodes.add(nodeRefB);
|
||||
// missing the folder node (testFolder)
|
||||
definition.setNodes(nodes);
|
||||
|
||||
// Do the transfer here
|
||||
|
||||
try
|
||||
{
|
||||
transferService.transfer(targetName, definition, callbacks);
|
||||
fail("transfer should have failed with an orphan not found exception");
|
||||
}
|
||||
catch (TransferException te)
|
||||
{
|
||||
logger.debug("deliberatly caught and ignored exception");
|
||||
}
|
||||
|
||||
// Can't dirty read transfer report here
|
||||
|
||||
boolean foundSourceReport = false;
|
||||
boolean foundDestReport = false;
|
||||
|
||||
for(TransferEvent event : callback.getEvents())
|
||||
{
|
||||
if(event instanceof TransferEventReport)
|
||||
{
|
||||
TransferEventReport reportEvent = (TransferEventReport)event;
|
||||
switch (reportEvent.getReportType())
|
||||
{
|
||||
case DESTINATION:
|
||||
foundDestReport = true;
|
||||
transferDestReport = reportEvent.getNodeRef();
|
||||
assertNotNull("dest transfer nodeId null", transferDestReport);
|
||||
break;
|
||||
|
||||
case SOURCE:
|
||||
foundSourceReport = true;
|
||||
transferReport = reportEvent.getNodeRef();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
assertTrue("source report not found", foundSourceReport);
|
||||
assertTrue("dest report not found", foundDestReport);
|
||||
}
|
||||
finally
|
||||
{
|
||||
endTransaction();
|
||||
}
|
||||
|
||||
setDefaultRollback(false);
|
||||
|
||||
/**
|
||||
* Now validate the client side error transfer report against the xsd file
|
||||
*/
|
||||
startNewTransaction();
|
||||
try
|
||||
{
|
||||
ContentReader reader = contentService.getReader(transferReport, ContentModel.PROP_CONTENT);
|
||||
assertNotNull("transfer reader is null", reader);
|
||||
assertEquals("client report mimetype not set", reader.getMimetype(), MimetypeMap.MIMETYPE_XML);
|
||||
String name = (String)nodeService.getProperty(transferReport, ContentModel.PROP_NAME);
|
||||
assertTrue("client report does not end with .xml", name.endsWith(".xml"));
|
||||
|
||||
logger.debug("This report should have failed");
|
||||
if(logger.isDebugEnabled())
|
||||
{
|
||||
dumpToSystemOut(transferReport);
|
||||
}
|
||||
|
||||
// Now validate the client side transfer report against the XSD
|
||||
Source transferReportSource = new StreamSource(reader.getContentInputStream());
|
||||
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
|
||||
final String TRANSFER_REPORT_SCHEMA_LOCATION = "classpath:org/alfresco/repo/transfer/report/TransferReport2.xsd";
|
||||
Schema schema = sf.newSchema(ResourceUtils.getURL(TRANSFER_REPORT_SCHEMA_LOCATION));
|
||||
Validator validator = schema.newValidator();
|
||||
try
|
||||
{
|
||||
validator.validate(transferReportSource);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
fail(e.getMessage() );
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
endTransaction();
|
||||
}
|
||||
|
||||
/**
|
||||
* Step 2
|
||||
* Call the transfer method to get a good success transfer report
|
||||
*/
|
||||
startNewTransaction();
|
||||
try
|
||||
{
|
||||
{
|
||||
TestTransferCallback callback = new TestTransferCallback();
|
||||
Set<TransferCallback> callbacks = new HashSet<TransferCallback>();
|
||||
callbacks.add(callback);
|
||||
TransferDefinition definition = new TransferDefinition();
|
||||
Set<NodeRef>nodes = new HashSet<NodeRef>();
|
||||
nodes.add(nodeRefA);
|
||||
nodes.add(nodeRefB);
|
||||
nodes.add(testFolder);
|
||||
definition.setNodes(nodes);
|
||||
|
||||
transferReport = transferService.transfer(targetName, definition, callbacks);
|
||||
@@ -2275,17 +2384,16 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
|
||||
ContentReader reader = contentService.getReader(transferReport, ContentModel.PROP_CONTENT);
|
||||
assertNotNull("transfer reader is null", reader);
|
||||
|
||||
// ContentReader reader2 = contentService.getReader(transferReport, ContentModel.PROP_CONTENT);
|
||||
// assertNotNull("transfer reader is null", reader2);
|
||||
//
|
||||
// logger.debug("now show the contents of the transfer report");
|
||||
// System.out.println("Client side transfer report");
|
||||
// reader2.getContent(System.out);
|
||||
logger.debug("This report should succeed");
|
||||
if(logger.isDebugEnabled())
|
||||
{
|
||||
dumpToSystemOut(transferReport);
|
||||
}
|
||||
|
||||
// Now validate the client side transfer report against the XSD
|
||||
Source transferReportSource = new StreamSource(reader.getContentInputStream());
|
||||
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
|
||||
final String TRANSFER_REPORT_SCHEMA_LOCATION = "classpath:org/alfresco/repo/transfer/report/TransferReport.xsd";
|
||||
final String TRANSFER_REPORT_SCHEMA_LOCATION = "classpath:org/alfresco/repo/transfer/report/TransferReport2.xsd";
|
||||
Schema schema = sf.newSchema(ResourceUtils.getURL(TRANSFER_REPORT_SCHEMA_LOCATION));
|
||||
Validator validator = schema.newValidator();
|
||||
try
|
||||
@@ -2311,6 +2419,15 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
|
||||
ContentReader reader = contentService.getReader(transferDestReport, ContentModel.PROP_CONTENT);
|
||||
assertNotNull("transfer reader is null", reader);
|
||||
|
||||
assertEquals("dest report mimetype not set", reader.getMimetype(), MimetypeMap.MIMETYPE_XML);
|
||||
String name = (String)nodeService.getProperty(transferReport, ContentModel.PROP_NAME);
|
||||
assertTrue("dest report does not end with .xml", name.endsWith(".xml"));
|
||||
|
||||
if(logger.isDebugEnabled())
|
||||
{
|
||||
dumpToSystemOut(transferDestReport);
|
||||
}
|
||||
|
||||
// Now validate the destination side transfer report against the XSD
|
||||
Source transferReportSource = new StreamSource(reader.getContentInputStream());
|
||||
SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
|
||||
@@ -2387,7 +2504,6 @@ public class TransferServiceImplTest extends BaseAlfrescoSpringTest
|
||||
}
|
||||
} // test transfer report
|
||||
|
||||
|
||||
private void dumpToSystemOut(NodeRef nodeRef) throws IOException
|
||||
{
|
||||
ContentReader reader2 = contentService.getReader(nodeRef, ContentModel.PROP_CONTENT);
|
||||
|
@@ -0,0 +1,173 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<xs:schema targetNamespace="http://www.alfresco.org/model/transferReport/2.0"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:report="http://www.alfresco.org/model/transferReport/2.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<!-- XML Schema for the client side transferReport owned by the
|
||||
alfresco transferService -->
|
||||
|
||||
<xs:element name="transferReport" type="report:transferReport">
|
||||
<xs:annotation>
|
||||
<xs:documentation>This is an Alfresco client side transfer report</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="transferReport">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The Alfresco client side transfer report
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:sequence>
|
||||
<xs:element name="target" type="report:target" maxOccurs="1"
|
||||
minOccurs="1">
|
||||
</xs:element>
|
||||
<xs:element name="definition" type="report:definition"
|
||||
maxOccurs="1" minOccurs="1">
|
||||
</xs:element>
|
||||
<xs:element name="exception" type="report:exception" maxOccurs="1"
|
||||
minOccurs="0">
|
||||
</xs:element>
|
||||
<xs:element name="events" type="report:events" maxOccurs="1"
|
||||
minOccurs="0">
|
||||
</xs:element>
|
||||
<xs:sequence maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:element name="node" type="report:node">
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="target">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The destination of the target
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:attribute name="name" type="string"></xs:attribute>
|
||||
<xs:attribute name="endpointPort" type="int"></xs:attribute>
|
||||
<xs:attribute name="endpointHost" type="string"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="definition">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The contents of the transfer
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
<xs:attribute name="isSync" type="boolean"></xs:attribute>
|
||||
<xs:attribute name="isReadOnly" type="boolean"></xs:attribute>
|
||||
<xs:attribute name="numberOfNodes" type="long"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="node">
|
||||
<xs:annotation>
|
||||
<xs:documentation>
|
||||
The nodes being transferred
|
||||
</xs:documentation>
|
||||
</xs:annotation>
|
||||
|
||||
<xs:sequence>
|
||||
<xs:element name="primaryParent" maxOccurs="1"
|
||||
minOccurs="0" type="report:primaryParent">
|
||||
</xs:element>
|
||||
</xs:sequence>
|
||||
|
||||
<xs:attribute name="nodeRef" type="string"></xs:attribute>
|
||||
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="events">
|
||||
<xs:choice maxOccurs="unbounded" minOccurs="0">
|
||||
<xs:element name="event" type="report:event"></xs:element>
|
||||
<xs:element name="eventBegin" type="report:eventBegin"></xs:element>
|
||||
<xs:element name="eventStartState" type="report:eventStartState"></xs:element>
|
||||
<xs:element name="eventEndState" type="report:eventEndState"></xs:element>
|
||||
<xs:element name="eventSendContent" type="report:eventSendContent"></xs:element>
|
||||
<xs:element name="eventSendSnapshot" type="report:eventSendSnapshot"></xs:element>
|
||||
<xs:element name="eventCommittingStatus" type="report:eventCommittingStatus"></xs:element>
|
||||
<xs:element name="eventReport" type="report:eventReport"></xs:element>
|
||||
<xs:element name="eventSuccess" type="report:eventSuccess"></xs:element>
|
||||
<xs:element name="eventCancelled" type="report:eventCancelled"></xs:element>
|
||||
<xs:element name="eventError" type="report:eventError"></xs:element>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="event" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventBegin" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
<xs:attribute name="transferId" type="string"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventStartState" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
<xs:attribute name="state" type="string"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventEndState" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
<xs:attribute name="state" type="string"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventSendSnapshot" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventReport" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
<xs:attribute name="nodeRef" type="string"></xs:attribute>
|
||||
<xs:attribute name="reportType" type="string"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventCommittingStatus" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
<xs:attribute name="position" type="string"></xs:attribute>
|
||||
<xs:attribute name="range" type="string"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventSendContent" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
<xs:attribute name="position" type="string"></xs:attribute>
|
||||
<xs:attribute name="range" type="string"></xs:attribute>
|
||||
<xs:attribute name="size" type="string"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventSuccess" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventCancelled" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="eventError" mixed="true">
|
||||
<xs:attribute name="date" type="dateTime"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="exception">
|
||||
<xs:attribute name="type" type="string"></xs:attribute>
|
||||
<xs:attribute name="message" type="string"></xs:attribute>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:complexType name="primaryParent">
|
||||
<xs:sequence>
|
||||
<xs:element name="parentAssoc" type="report:parentAssoc"/>
|
||||
<xs:element name="primaryPath" type="xs:string" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
<xs:complexType name="parentAssoc" mixed="true">
|
||||
<xs:attribute name="from" use="required" type="xs:string"/>
|
||||
<xs:attribute name="isPrimary" use="required" type="xs:boolean"/>
|
||||
<xs:attribute name="type" use="required"/>
|
||||
</xs:complexType>
|
||||
|
||||
|
||||
</xs:schema>
|
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (C) 2009-2010 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.repo.transfer.report;
|
||||
|
||||
/**
|
||||
* The transfer report model - extended for XML Manifest Model
|
||||
*/
|
||||
public interface TransferReportModel2 extends TransferReportModel
|
||||
{
|
||||
|
||||
static final String TRANSFER_REPORT_MODEL_2_0_URI = "http://www.alfresco.org/model/transferReport/2.0";
|
||||
|
||||
// New in 1.1
|
||||
static final String LOCALNAME_TRANSFER_EVENT_START_STATE = "eventStartState";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_END_STATE = "eventEndState";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_REPORT = "eventReport";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_SENDING_CONTENT = "eventSendContent";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_SENDING_SNAPSHOT = "eventSendSnapshot";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_BEGIN = "eventBegin";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_COMMITTING_STATUS = "eventCommittingStatus";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_SENT_CONTENT = "eventSentContent";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_CANCELLED = "eventCancelled";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_ERROR = "eventError";
|
||||
static final String LOCALNAME_TRANSFER_EVENT_SUCCESS = "eventSuccess";
|
||||
|
||||
}
|
@@ -98,7 +98,7 @@ public class TransferReporterImpl implements TransferReporter
|
||||
|
||||
String title = transferName;
|
||||
String description = "Transfer Report - target: " + target.getName();
|
||||
String name = transferName;
|
||||
String name = transferName + ".xml";
|
||||
|
||||
properties.put(ContentModel.PROP_NAME, name);
|
||||
properties.put(ContentModel.PROP_TITLE, title);
|
||||
@@ -109,7 +109,6 @@ public class TransferReporterImpl implements TransferReporter
|
||||
writer.setMimetype(MimetypeMap.MIMETYPE_XML);
|
||||
writer.setEncoding(DEFAULT_ENCODING);
|
||||
|
||||
//
|
||||
XMLTransferReportWriter reportWriter = new XMLTransferReportWriter();
|
||||
|
||||
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(writer.getContentOutputStream()));
|
||||
@@ -118,14 +117,12 @@ public class TransferReporterImpl implements TransferReporter
|
||||
{
|
||||
reportWriter.startTransferReport(DEFAULT_ENCODING, bufferedWriter);
|
||||
|
||||
// Header
|
||||
reportWriter.writeTarget(target);
|
||||
|
||||
reportWriter.writeDefinition(definition);
|
||||
|
||||
reportWriter.writeException(e);
|
||||
|
||||
// Detail
|
||||
reportWriter.writeTransferEvents(events);
|
||||
|
||||
reportWriter.endTransferReport();
|
||||
@@ -166,7 +163,7 @@ public class TransferReporterImpl implements TransferReporter
|
||||
|
||||
String title = transferName;
|
||||
String description = "Transfer Report - target: " + target.getName();
|
||||
String name = transferName;
|
||||
String name = transferName + ".xml";
|
||||
|
||||
properties.put(ContentModel.PROP_NAME, name);
|
||||
properties.put(ContentModel.PROP_TITLE, title);
|
||||
@@ -189,8 +186,12 @@ public class TransferReporterImpl implements TransferReporter
|
||||
// Header
|
||||
reportWriter.writeTarget(target);
|
||||
|
||||
// Definition of transfer
|
||||
reportWriter.writeDefinition(definition);
|
||||
|
||||
// Events of transfer
|
||||
reportWriter.writeTransferEvents(events);
|
||||
|
||||
/**
|
||||
* Write the node summary details to the transfer report
|
||||
*/
|
||||
@@ -248,9 +249,6 @@ public class TransferReporterImpl implements TransferReporter
|
||||
return null;
|
||||
}
|
||||
|
||||
// Detail Events
|
||||
reportWriter.writeTransferEvents(events);
|
||||
|
||||
reportWriter.endTransferReport();
|
||||
|
||||
return ref.getChildRef();
|
||||
@@ -289,7 +287,7 @@ public class TransferReporterImpl implements TransferReporter
|
||||
|
||||
String title = transferName + "_destination";
|
||||
String description = "Transfer Destination Report - target: " + target.getName();
|
||||
String name = title;
|
||||
String name = title + ".xml";
|
||||
|
||||
logger.debug("writing destination transfer report " + title);
|
||||
logger.debug("parent node ref " + target.getNodeRef());
|
||||
|
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* Copyright (C) 2009-2010 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.repo.transfer.report;
|
||||
|
||||
import org.alfresco.service.cmr.transfer.TransferEvent;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
public interface XMLTransferEventFormatter
|
||||
{
|
||||
AttributesImpl getAttributes(TransferEvent event);
|
||||
String getElementName(TransferEvent event);
|
||||
String getMessage(TransferEvent event);
|
||||
}
|
@@ -0,0 +1,386 @@
|
||||
/*
|
||||
* Copyright (C) 2009-2010 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
package org.alfresco.repo.transfer.report;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.service.cmr.transfer.TransferEvent;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventBegin;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventEndState;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventEnterState;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventReport;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventSendingContent;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventCommittingStatus;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventCancelled;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventError;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventSentContent;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventSuccess;
|
||||
|
||||
import org.alfresco.service.cmr.transfer.TransferEventSendingSnapshot;
|
||||
import org.springframework.extensions.surf.util.ISO8601DateFormat;
|
||||
import org.xml.sax.helpers.AttributesImpl;
|
||||
|
||||
/**
|
||||
* The XMLTransferEventFormatterFactory returns formatters for the various client side TransferEvents.
|
||||
*
|
||||
* The main entry point for this class is the static method getFormatter();
|
||||
* @author mrogers
|
||||
*
|
||||
*/
|
||||
public class XMLTransferEventFormatterFactory
|
||||
{
|
||||
|
||||
private static XMLTransferEventFormatter defaultFormatter = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel.LOCALNAME_TRANSFER_EVENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return event.getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventEnterStateFormatter = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventEnterState s = (TransferEventEnterState)event;
|
||||
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "state", "state", "string", s.getTransferState().toString());
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_START_STATE;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return event.getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventReportFormatter = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventReport s = (TransferEventReport)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "nodeRef", "nodeRef", "string", s.getNodeRef().toString());
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "reportType", "reportType", "string", s.getReportType().toString());
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_REPORT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventSendingContentFormatter = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventSendingContent s = (TransferEventSendingContent)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "position", "position", "string", String.valueOf(s.getPosition()));
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "range", "range", "string", String.valueOf(s.getRange()));
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "size", "size", "string", String.valueOf(s.getSize()));
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_SENDING_CONTENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventSendingSnapshotFormatter = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventSendingSnapshot s = (TransferEventSendingSnapshot)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_SENDING_SNAPSHOT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventBeginFormatter = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventBegin s = (TransferEventBegin)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "transferId", "transferId", "string", s.getTransferId());
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_BEGIN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return event.getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventEndStateFormatter = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventEndState s = (TransferEventEndState)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "state", "state", "string", s.getTransferState().toString());
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_END_STATE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventCommittingStatus = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventCommittingStatus s = (TransferEventCommittingStatus)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "position", "position", "string", String.valueOf(s.getPosition()));
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "range", "range", "string", String.valueOf(s.getRange()));
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_COMMITTING_STATUS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return event.getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventCancelled = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventCancelled s = (TransferEventCancelled)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_CANCELLED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return event.getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventSuccess = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventSuccess s = (TransferEventSuccess)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return event.getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventSentContent = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventSentContent s = (TransferEventSentContent)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_SENT_CONTENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
return event.getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
private static XMLTransferEventFormatter eventError = new XMLTransferEventFormatter() {
|
||||
|
||||
@Override
|
||||
public AttributesImpl getAttributes(TransferEvent event)
|
||||
{
|
||||
TransferEventError s = (TransferEventError)event;
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
return attributes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getElementName(TransferEvent event)
|
||||
{
|
||||
return TransferReportModel2.LOCALNAME_TRANSFER_EVENT_ERROR;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage(TransferEvent event)
|
||||
{
|
||||
TransferEventError s = (TransferEventError)event;
|
||||
return s.getException().getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
protected static Map<Class<?>, XMLTransferEventFormatter> formatters;
|
||||
|
||||
static
|
||||
{
|
||||
formatters = new HashMap<Class<?>, XMLTransferEventFormatter>(29);
|
||||
formatters.put(TransferEventEnterState.class, eventEnterStateFormatter);
|
||||
formatters.put(TransferEventEndState.class, eventEndStateFormatter);
|
||||
formatters.put(TransferEventReport.class, eventReportFormatter);
|
||||
formatters.put(TransferEventSendingContent.class, eventSendingContentFormatter);
|
||||
formatters.put(TransferEventSendingSnapshot.class, eventSendingSnapshotFormatter);
|
||||
formatters.put(TransferEventBegin.class, eventBeginFormatter);
|
||||
formatters.put(TransferEventCommittingStatus.class, eventCommittingStatus);
|
||||
formatters.put(TransferEventCancelled.class, eventCancelled);
|
||||
formatters.put(TransferEventError.class, eventError);
|
||||
formatters.put(TransferEventSuccess.class, eventSuccess);
|
||||
formatters.put(TransferEventSentContent.class, eventSentContent);
|
||||
}
|
||||
|
||||
public static XMLTransferEventFormatter getFormatter(TransferEvent event)
|
||||
{
|
||||
|
||||
XMLTransferEventFormatter formatter = formatters.get(event.getClass());
|
||||
|
||||
if(formatter == null)
|
||||
{
|
||||
return defaultFormatter;
|
||||
}
|
||||
else
|
||||
{
|
||||
return formatter;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -28,6 +28,9 @@ import org.alfresco.service.cmr.repository.ChildAssociationRef;
|
||||
import org.alfresco.service.cmr.repository.Path;
|
||||
import org.alfresco.service.cmr.transfer.TransferDefinition;
|
||||
import org.alfresco.service.cmr.transfer.TransferEvent;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventBegin;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventEndState;
|
||||
import org.alfresco.service.cmr.transfer.TransferEventEnterState;
|
||||
import org.alfresco.service.cmr.transfer.TransferTarget;
|
||||
import org.alfresco.service.namespace.QName;
|
||||
import org.dom4j.io.OutputFormat;
|
||||
@@ -66,10 +69,10 @@ public class XMLTransferReportWriter
|
||||
this.writer = new XMLWriter(writer, format);
|
||||
this.writer.startDocument();
|
||||
|
||||
this.writer.startPrefixMapping(PREFIX, TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI);
|
||||
this.writer.startPrefixMapping(PREFIX, TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI);
|
||||
|
||||
// Start Transfer Manifest // uri, name, prefix
|
||||
this.writer.startElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_REPORT, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_REPORT, EMPTY_ATTRIBUTES);
|
||||
this.writer.startElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_REPORT, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_REPORT, EMPTY_ATTRIBUTES);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,7 +81,7 @@ public class XMLTransferReportWriter
|
||||
public void endTransferReport() throws SAXException
|
||||
{
|
||||
// End Transfer Manifest
|
||||
writer.endElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_REPORT, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_REPORT);
|
||||
writer.endElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_REPORT, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_REPORT);
|
||||
writer.endPrefixMapping(PREFIX);
|
||||
writer.endDocument();
|
||||
}
|
||||
@@ -89,12 +92,12 @@ public class XMLTransferReportWriter
|
||||
public void writeTarget(TransferTarget target) throws SAXException
|
||||
{
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "name", "name", "String", target.getName());
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "endpointHost", "endpointHost", "String", target.getEndpointHost());
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "endpointPort", "endpointPort", "int", String.valueOf(target.getEndpointPort()));
|
||||
attributes.addAttribute(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, "name", "name", "String", target.getName());
|
||||
attributes.addAttribute(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, "endpointHost", "endpointHost", "String", target.getEndpointHost());
|
||||
attributes.addAttribute(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, "endpointPort", "endpointPort", "int", String.valueOf(target.getEndpointPort()));
|
||||
|
||||
writer.startElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_TARGET, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_TARGET, attributes);
|
||||
writer.endElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_TARGET, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_TARGET);
|
||||
writer.startElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_TARGET, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_TARGET, attributes);
|
||||
writer.endElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_TARGET, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_TARGET);
|
||||
|
||||
}
|
||||
|
||||
@@ -103,8 +106,17 @@ public class XMLTransferReportWriter
|
||||
*/
|
||||
public void writeDefinition(TransferDefinition definition) throws SAXException
|
||||
{
|
||||
writer.startElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_DEFINITION, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_DEFINITION, EMPTY_ATTRIBUTES);
|
||||
writer.endElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_DEFINITION, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_DEFINITION);
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, "isReadOnly", "isReadOnly", "boolean", definition.isReadOnly()?"true":"false");
|
||||
attributes.addAttribute(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, "isSync", "isSync", "boolean", definition.isSync()?"true":"false");
|
||||
|
||||
if(definition.getNodes() != null)
|
||||
{
|
||||
attributes.addAttribute(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, "numberOfNodes", "numberOfNodes", "string", String.valueOf(definition.getNodes().size()));
|
||||
}
|
||||
|
||||
writer.startElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_DEFINITION, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_DEFINITION, attributes);
|
||||
writer.endElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_DEFINITION, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_DEFINITION);
|
||||
|
||||
}
|
||||
|
||||
@@ -114,10 +126,10 @@ public class XMLTransferReportWriter
|
||||
public void writeException(Exception e) throws SAXException
|
||||
{
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "type", "type", "String", e.getClass().getName());
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "message", "message", "String", e.getMessage());
|
||||
writer.startElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_EXCEPTION, PREFIX + ":" + TransferReportModel.LOCALNAME_EXCEPTION, attributes);
|
||||
writer.endElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_EXCEPTION, PREFIX + ":" + TransferReportModel.LOCALNAME_EXCEPTION);
|
||||
attributes.addAttribute(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, "type", "type", "String", e.getClass().getName());
|
||||
attributes.addAttribute(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, "message", "message", "String", e.getMessage());
|
||||
writer.startElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_EXCEPTION, PREFIX + ":" + TransferReportModel.LOCALNAME_EXCEPTION, attributes);
|
||||
writer.endElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_EXCEPTION, PREFIX + ":" + TransferReportModel.LOCALNAME_EXCEPTION);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -125,14 +137,14 @@ public class XMLTransferReportWriter
|
||||
*/
|
||||
public void writeTransferEvents(List<TransferEvent> events) throws SAXException
|
||||
{
|
||||
writer.startElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_EVENTS, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_EVENTS, EMPTY_ATTRIBUTES);
|
||||
writer.startElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_EVENTS, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_EVENTS, EMPTY_ATTRIBUTES);
|
||||
|
||||
for(TransferEvent event : events)
|
||||
{
|
||||
writeTransferEvent(event);
|
||||
}
|
||||
|
||||
writer.endElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_EVENTS, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_EVENTS);
|
||||
writer.endElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_EVENTS, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_EVENTS);
|
||||
|
||||
}
|
||||
|
||||
@@ -143,31 +155,31 @@ public class XMLTransferReportWriter
|
||||
{
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute("uri", "nodeRef", "nodeRef", "String", node.getNodeRef().toString());
|
||||
writer.startElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_NODE, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_NODE, attributes);
|
||||
writer.startElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_NODE, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_NODE, attributes);
|
||||
|
||||
if(node.getPrimaryParentAssoc() != null)
|
||||
{
|
||||
writePrimaryParent(node.getPrimaryParentAssoc(), node.getParentPath());
|
||||
}
|
||||
|
||||
writer.endElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_NODE, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_NODE);
|
||||
writer.endElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_NODE, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_NODE);
|
||||
}
|
||||
|
||||
private void writePrimaryParent(ChildAssociationRef parentAssoc, Path parentPath) throws SAXException
|
||||
{
|
||||
writer.startElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PARENT, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PARENT, EMPTY_ATTRIBUTES);
|
||||
writer.startElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PARENT, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PARENT, EMPTY_ATTRIBUTES);
|
||||
|
||||
writeParentAssoc(parentAssoc);
|
||||
|
||||
writer.startElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PATH, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PATH, EMPTY_ATTRIBUTES);
|
||||
writer.startElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PATH, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PATH, EMPTY_ATTRIBUTES);
|
||||
if(parentPath != null)
|
||||
{
|
||||
String path = parentPath.toString();
|
||||
writer.characters(path.toCharArray(), 0, path.length());
|
||||
}
|
||||
writer.endElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PATH, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH);
|
||||
writer.endElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PATH, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PATH);
|
||||
|
||||
writer.endElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PARENT, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT);
|
||||
writer.endElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, TransferReportModel.LOCALNAME_TRANSFER_PRIMARY_PARENT, PREFIX + ":" + ManifestModel.LOCALNAME_ELEMENT_PRIMARY_PARENT);
|
||||
}
|
||||
|
||||
private void writeParentAssoc(ChildAssociationRef assoc) throws SAXException
|
||||
@@ -187,22 +199,25 @@ public class XMLTransferReportWriter
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Write the transfer manifest header
|
||||
* Write the transfer event
|
||||
*/
|
||||
public void writeTransferEvent(TransferEvent event) throws SAXException
|
||||
{
|
||||
AttributesImpl attributes = new AttributesImpl();
|
||||
attributes.addAttribute(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, "date", "date", "dateTime", ISO8601DateFormat.format(event.getTime()));
|
||||
|
||||
writer.startElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_EVENT, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_EVENT, attributes);
|
||||
XMLTransferEventFormatter formatter = XMLTransferEventFormatterFactory.getFormatter(event);
|
||||
|
||||
String message = event.getMessage();
|
||||
AttributesImpl attributes = formatter.getAttributes(event);
|
||||
String elementName = formatter.getElementName(event);
|
||||
String message = formatter.getMessage(event);
|
||||
|
||||
writer.startElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, elementName, PREFIX + ":" + elementName, attributes);
|
||||
if(message != null)
|
||||
{
|
||||
writer.characters(message.toCharArray(), 0, message.length());
|
||||
}
|
||||
writer.endElement(TransferReportModel.TRANSFER_REPORT_MODEL_1_0_URI, TransferReportModel.LOCALNAME_TRANSFER_EVENT, PREFIX + ":" + TransferReportModel.LOCALNAME_TRANSFER_EVENT);
|
||||
writer.endElement(TransferReportModel2.TRANSFER_REPORT_MODEL_2_0_URI, elementName, PREFIX + ":" + elementName);
|
||||
}
|
||||
|
||||
private String formatQName(QName qname)
|
||||
|
Reference in New Issue
Block a user