01: /**
02: * Speedo: an implementation of JDO compliant personality on top of JORM generic
03: * I/O sub-system.
04: * Copyright (C) 2001-2004 France Telecom R&D
05: *
06: * This library is free software; you can redistribute it and/or
07: * modify it under the terms of the GNU Lesser General Public
08: * License as published by the Free Software Foundation; either
09: * version 2 of the License, or (at your option) any later version.
10: *
11: * This library is distributed in the hope that it will be useful,
12: * but WITHOUT ANY WARRANTY; without even the implied warranty of
13: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14: * Lesser General Public License for more details.
15: *
16: * You should have received a copy of the GNU Lesser General Public
17: * License along with this library; if not, write to the Free Software
18: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: *
20: *
21: *
22: * Contact: speedo@objectweb.org
23: *
24: */package org.objectweb.speedo.generation.serializer;
25:
26: import java.util.Iterator;
27:
28: import org.objectweb.speedo.api.SpeedoException;
29: import org.objectweb.speedo.api.SpeedoProperties;
30: import org.objectweb.speedo.generation.lib.AbstractGeneratorComponent;
31: import org.objectweb.speedo.lib.Personality;
32: import org.objectweb.speedo.mapper.lib.Object2StringSerializer;
33: import org.objectweb.speedo.metadata.SpeedoXMLDescriptor;
34:
35: /**
36: * @author Y.Bersihand
37: */
38: public class MISerializer extends AbstractGeneratorComponent {
39: public final static String LOGGER_NAME = SpeedoProperties.LOGGER_NAME
40: + ".generation.jorm";
41:
42: public MISerializer(Personality p) {
43: super (p);
44: }
45:
46: public boolean init() throws SpeedoException {
47: if (scp.getXmldescriptor().isEmpty()) {
48: return false;
49: }
50: logger = scp.loggerFactory.getLogger(LOGGER_NAME);
51: return true;
52: }
53:
54: public String getTitle() {
55: return "Serializing Meta Info...";
56: }
57:
58: public String getSummary() {
59: return scp.getXmldescriptor().size() + " .jmi file(s) written.";
60: }
61:
62: /**
63: * Launch the serialization.
64: */
65: public void process() throws SpeedoException {
66: if (scp.getXmldescriptor().isEmpty()) {
67: return;
68: }
69: try {
70: for (Iterator itDesc = scp.getXmldescriptor().values()
71: .iterator(); itDesc.hasNext();) {
72: SpeedoXMLDescriptor desc = (SpeedoXMLDescriptor) itDesc
73: .next();
74: serialize(desc);
75: }
76: } catch (SpeedoException e) {
77: throw new SpeedoException(
78: "Error during serialization of meta information", e);
79: }
80: }
81:
82: private void serialize(SpeedoXMLDescriptor desc)
83: throws SpeedoException {
84: //Serialize the list in the file
85: try {
86: Object2StringSerializer.serialize(scp.output, desc.xmlFile,
87: desc.mos, logger);
88: } catch (Exception io) {
89: throw new SpeedoException(
90: "IO Exception, impossible to write the "
91: + "meta information for the jdo file "
92: + desc.xmlFile, io);
93: }
94: }
95:
96: }
|