KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > jmi > javamodel > regenerator > Regenerator


1 /*
2  * The contents of this file are subject to the terms of the Common Development
3  * and Distribution License (the License). You may not use this file except in
4  * compliance with the License.
5  *
6  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
7  * or http://www.netbeans.org/cddl.txt.
8  *
9  * When distributing Covered Code, include this CDDL Header Notice in each file
10  * and include the License file at http://www.netbeans.org/cddl.txt.
11  * If applicable, add the following below the CDDL Header, with the fields
12  * enclosed by brackets [] replaced by your own identifying information:
13  * "Portions Copyrighted [year] [name of copyright owner]"
14  *
15  * The Original Software is NetBeans. The Initial Developer of the Original
16  * Software is Sun Microsystems, Inc. Portions Copyright 1997-2006 Sun
17  * Microsystems, Inc. All Rights Reserved.
18  */

19 /*
20  * Regenerator.java
21  *
22  * Created on 04 December 2003, 16:40
23  */

24
25 package org.netbeans.jmi.javamodel.regenerator;
26
27 import java.io.File JavaDoc;
28 import java.io.IOException JavaDoc;
29 import java.util.Iterator JavaDoc;
30 import junit.framework.AssertionFailedError;
31 import org.netbeans.jmi.javamodel.JavaModelPackage;
32 import org.netbeans.jmi.javamodel.Resource;
33 import org.netbeans.jmi.javamodel.codegen.Utility;
34 import org.netbeans.jmi.javamodel.codegen.Utility;
35 import org.netbeans.junit.diff.Diff;
36 import org.netbeans.modules.javacore.internalapi.JavaMetamodel;
37 import org.openide.filesystems.FileSystem;
38 import org.openide.filesystems.FileUtil;
39
40 /**
41  *
42  * @author Jan Becicka
43  */

44 public class Regenerator {
45     
46     /**
47      * Holds value of property sourceFileSystem.
48      */

49     private FileSystem sourceFileSystem;
50     
51     /**
52      * Holds value of property targetFileSystem.
53      */

54     private FileSystem targetFileSystem;
55     
56     private Cloner cloner;
57     
58     /** Creates a new instance of Regenerator */
59     public Regenerator() {
60     }
61     
62     /**
63      * Getter for property sourceFileSystem.
64      * @return Value of property sourceFileSystem.
65      */

66     public FileSystem getSourceFileSystem() {
67         return this.sourceFileSystem;
68     }
69     
70     /**
71      * Setter for property sourceFileSystem.
72      * @param sourceFileSystem New value of property sourceFileSystem.
73      */

74     public void setSourceFileSystem(FileSystem sourceFileSystem) {
75         this.sourceFileSystem = sourceFileSystem;
76     }
77     
78     /**
79      * Getter for property targetFileSystem.
80      * @return Value of property targetFileSystem.
81      */

82     public FileSystem getTargetFileSystem() {
83         return this.targetFileSystem;
84     }
85     
86     /**
87      * Setter for property targetFileSystem.
88      * @param targetFileSystem New value of property targetFileSystem.
89      */

90     public void setTargetFileSystem(FileSystem targetFileSystem) {
91         this.targetFileSystem = targetFileSystem;
92         cloner = new Cloner(targetFileSystem);
93     }
94     
95     public void regenerate(String JavaDoc resourceName) {
96         regenerate(JavaMetamodel.getManager().getResource(sourceFileSystem.getRoot(), resourceName));
97     }
98     
99     public void regenerate(Resource resource) {
100         Resource result;
101         Utility.beginTrans(true);
102         try {
103             result = cloner.duplicate(resource);
104         } finally {
105             Utility.endTrans(false);
106         }
107         Diff diff = new LexDiff();
108         File JavaDoc sourceFile = FileUtil.toFile(JavaMetamodel.getManager().getFileObject(resource));
109         File JavaDoc targetFile = FileUtil.toFile(JavaMetamodel.getManager().getFileObject(result));
110         try {
111             if ( diff.diff(sourceFile, targetFile, null)) {
112                 throw new AssertionFailedError("Test Failed !!! " + sourceFile.getName() + " differs from " + targetFile.getName());
113             } else {
114                 System.out.println("Test Passed !!! " + sourceFile.getName());
115             }
116         } catch (IOException JavaDoc ioe) {
117             ioe.printStackTrace();
118         }
119     }
120     
121     public void regenerateAll() {
122         System.out.println("regenerate all");
123         JavaModelPackage source = JavaMetamodel.getManager().resolveJavaExtent(sourceFileSystem.getRoot());
124         for(Iterator JavaDoc it = source.getResource().refAllOfClass().iterator(); it.hasNext(); regenerate((Resource) it.next()));
125     }
126 }
127
Popular Tags