You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2010/09/27 20:31:03 UTC
svn commit: r1001858 - in /openjpa/tools/trunk/openjpa-tools/src:
main/java/org/apache/openjpa/tools/MigrationTool.java
main/resources/META-INF/migration-actions.xml
test/java/org/apache/openjpa/tools/TestMigratedOutput.java
Author: ppoddar
Date: Mon Sep 27 18:31:02 2010
New Revision: 1001858
URL: http://svn.apache.org/viewvc?rev=1001858&view=rev
Log:
Add attribute order
Modified:
openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java
openjpa/tools/trunk/openjpa-tools/src/main/resources/META-INF/migration-actions.xml
openjpa/tools/trunk/openjpa-tools/src/test/java/org/apache/openjpa/tools/TestMigratedOutput.java
Modified: openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java
URL: http://svn.apache.org/viewvc/openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java?rev=1001858&r1=1001857&r2=1001858&view=diff
==============================================================================
--- openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java (original)
+++ openjpa/tools/trunk/openjpa-tools/src/main/java/org/apache/openjpa/tools/MigrationTool.java Mon Sep 27 18:31:02 2010
@@ -20,11 +20,14 @@ package org.apache.openjpa.tools;
import java.io.File;
import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
@@ -118,7 +121,6 @@ public class MigrationTool {
*/
private Map<String, List<Actions>> actionMap = new HashMap<String, List<Actions>>();
-
/**
* Standard JDK logger with a specialized formatter to augment location information
* in the input document from the SAX parser.
@@ -176,7 +178,19 @@ public class MigrationTool {
}
public void setOutput(String output) {
- _output = Files.getOutputStream(output, Thread.currentThread().getContextClassLoader());
+ try {
+ _output = Files.getOutputStream(output, Thread.currentThread().getContextClassLoader());
+ } catch (Exception ex) {
+ try {
+ String[] paths = output.split(File.separator);
+ File file = new File(output);
+ file.mkdirs();
+ file.createNewFile();
+ _output = new FileOutputStream(file);
+ } catch (IOException e) {
+ throw new RuntimeException("Error creating [" + output + "]", e);
+ }
+ }
}
public void setError(String errorOutput) throws IOException {
@@ -328,13 +342,13 @@ public class MigrationTool {
root.setAttributeNode((Attr)newNode);
break;
case INSERT_NODE:
- root.appendChild(newNode);
+ insertNode(root, newNode);
root = (Element)newNode;
break;
case PROMOTE_ATTR:
case RENAME_CHILD_NODE:
case SPLIT_NODE:
- root.appendChild(newNode);
+ insertNode(root, newNode);
break;
case IGNORE_ATTR:
case IGNORE_NODE:
@@ -353,7 +367,7 @@ public class MigrationTool {
}
Element newNode = executeActions(target, sub, root);
if (newNode != null) {
- root.appendChild(newNode);
+ insertNode(root, newNode);
}
}
@@ -401,4 +415,42 @@ public class MigrationTool {
throw new RuntimeException(this + " can not convert [" + v + "] into an input stream", e);
}
}
+
+ /**
+ * Inserts a new child to the parent in specific order.
+ */
+ private void insertNode(Node parent, Node newChild) {
+ NodeList children = parent.getChildNodes();
+ for (int i = 0; i < children.getLength(); i++) {
+ Node refChild = children.item(i);
+ if (compare(newChild, refChild) < 0) {
+ parent.insertBefore(newChild, refChild);
+ return;
+ }
+ }
+ parent.appendChild(newChild);
+ }
+
+ private int compare(Node n1, Node n2) {
+ return getNodeOrder(n1) - getNodeOrder(n2);
+ }
+
+ private int getNodeOrder(Node n) {
+ int i = _attributeOrder.indexOf(n.getNodeName());
+ if (i == -1) {
+ return 0;
+ }
+ return i;
+ }
+
+ private static List<String> _attributeOrder = Arrays.asList(
+ "basic",
+ "version",
+ "many-to-one",
+ "one-to-many",
+ "one-to-one",
+ "many-to-many",
+ "element-collection",
+ "embedded",
+ "transient");
}
Modified: openjpa/tools/trunk/openjpa-tools/src/main/resources/META-INF/migration-actions.xml
URL: http://svn.apache.org/viewvc/openjpa/tools/trunk/openjpa-tools/src/main/resources/META-INF/migration-actions.xml?rev=1001858&r1=1001857&r2=1001858&view=diff
==============================================================================
--- openjpa/tools/trunk/openjpa-tools/src/main/resources/META-INF/migration-actions.xml (original)
+++ openjpa/tools/trunk/openjpa-tools/src/main/resources/META-INF/migration-actions.xml Mon Sep 27 18:31:02 2010
@@ -117,6 +117,16 @@
</rename-child-node>
</actions>
+<actions for="one-to-one">
+ <rename-node to="one-to-one"/>
+ <rename-attr from="name" to="name"/>
+ <rename-attr from="class" to="target-entity"/>
+ <rename-attr from="not-null" to="optional">
+ <map-value from="true" to="false"/>
+ <map-value from="false" to="true"/>
+ </rename-attr>
+</actions>
+
<actions for="column">
<rename-node to="column"/>
<rename-attr from="name" to="name"/>
Modified: openjpa/tools/trunk/openjpa-tools/src/test/java/org/apache/openjpa/tools/TestMigratedOutput.java
URL: http://svn.apache.org/viewvc/openjpa/tools/trunk/openjpa-tools/src/test/java/org/apache/openjpa/tools/TestMigratedOutput.java?rev=1001858&r1=1001857&r2=1001858&view=diff
==============================================================================
--- openjpa/tools/trunk/openjpa-tools/src/test/java/org/apache/openjpa/tools/TestMigratedOutput.java (original)
+++ openjpa/tools/trunk/openjpa-tools/src/test/java/org/apache/openjpa/tools/TestMigratedOutput.java Mon Sep 27 18:31:02 2010
@@ -54,7 +54,7 @@ public class TestMigratedOutput extends
public void testSampleIsJPACompliant() {
- migrateAndValidate("sample");
+ migrateAndValidate(System.getProperty("sample","sample"));
}
void migrateAndValidate(String type) {