1 10 package org.mmbase.util.xml.applicationdata; 11 12 import java.io.File ; 13 import java.io.IOException ; 14 import java.util.*; 15 16 import org.mmbase.bridge.util.HugeNodeListIterator; 17 import org.mmbase.storage.search.*; 18 import org.mmbase.storage.search.implementation.*; 19 import org.mmbase.module.core.*; 20 import org.mmbase.module.corebuilders.InsRel; 21 import org.mmbase.util.logging.*; 22 import org.mmbase.util.xml.ApplicationReader; 23 24 31 public class FullBackupDataWriter { 32 33 36 private static Logger log = Logging.getLoggerInstance(FullBackupDataWriter.class); 37 38 47 public static void writeContext(ApplicationReader reader, String targetPath, MMBase mmbase, Logger logger) throws IOException , SearchQueryException { 48 String subTargetPath = targetPath + "/" + reader.getName() + "/"; 50 File file = new File (subTargetPath); 51 file.mkdirs(); 52 writeNodes(subTargetPath, mmbase, logger); 54 logger.info("Full backup finished."); 55 } 56 57 66 static void writeNodes(String subTargetPath, MMBase mmbase, Logger logger) throws IOException , SearchQueryException { 67 for (Iterator i = mmbase.getBuilders().iterator(); i.hasNext(); ) { 69 MMObjectBuilder builder = (MMObjectBuilder) i.next(); 70 71 String builderName = builder.getTableName(); 73 if (builder.isVirtual() || 74 builderName.equals("reldef") || 75 builderName.equals("typerel") || 76 builderName.equals("versions") || 77 builderName.equals("syncnodes") || 78 builderName.equals("daymarks") || 79 builderName.equals("oalias") || 80 builderName.equals("icaches")) { 81 continue; 82 } 83 boolean isRelation = builder instanceof InsRel; 84 85 NodeSearchQuery query = new NodeSearchQuery(builder); 86 StepField otypeField = query.getField(builder.getField(MMObjectBuilder.FIELD_OBJECT_TYPE)); 87 BasicFieldValueConstraint constraint = new BasicFieldValueConstraint(otypeField, new Integer (builder.getObjectType())); 88 query.setConstraint(constraint); 89 90 List nodes = builder.getNodes(query); 92 writeNodes(subTargetPath, mmbase, logger, builder, nodes, isRelation); 93 } 94 } 95 96 105 static void writeNodes(String subTargetPath, MMBase mmbase, Logger logger, MMObjectBuilder builder, List nodes, boolean isRelation) { 106 107 NodeWriter nodeWriter = new NodeWriter(mmbase, logger, subTargetPath, builder.getTableName(), isRelation); 109 110 Iterator iNodes = nodes.iterator(); 111 int nrWritten = 0; 112 while (iNodes.hasNext()) { 113 MMObjectNode node = (MMObjectNode) iNodes.next(); 114 if (node.getBuilder() == builder) { 116 nodeWriter.write(node); 117 nrWritten++; 118 } 119 } 120 nodeWriter.done(); 121 122 log.debug("Builder " + builder.getTableName() + ": " + nrWritten + (isRelation ? " relations" : " nodes") + " written."); 123 } 124 125 } 126 | Popular Tags |