KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > SOFA > SOFAnode > Made > CodeGen > CGFileAccess


1 /* $Id: CGFileAccess.java,v 1.2 2003/02/27 19:27:37 hnetynka Exp $ */
2 package SOFA.SOFAnode.Made.CodeGen;
3
4 import java.io.File JavaDoc;
5 import java.io.IOException JavaDoc;
6
7 /** Methods for accessing files and directories.
8   *
9   * @author Petr Hnetynka
10   */

11 public class CGFileAccess {
12   
13   File JavaDoc _root;
14   boolean rewrite;
15   
16   /** Constructor.
17     * @param rootDir root directory of created files
18     * @param rewrite if already existing files with the same name can be rewritten
19     */

20   public CGFileAccess(String JavaDoc rootDir, boolean rewrite) throws IOException JavaDoc {
21     _root = new File JavaDoc(rootDir);
22     if (! _root.isDirectory()) { // given path is not directory
23
throw new IOException JavaDoc(rootDir+" "+Res.res.getString("MSG_IsNotDir"));
24     }
25     this.rewrite = rewrite;
26   }
27
28   /** Returns root of created files */
29   public File JavaDoc root() {
30     return _root;
31   }
32   
33
34   /** Creates new writer with given name relatively to the root
35     *
36     * @param name name of created file
37     * @exception IOException if file cannot be created
38     */

39   public CGFileWriter newCGWriter(String JavaDoc name) throws IOException JavaDoc {
40     File JavaDoc path = new File JavaDoc(_root, name);
41     if (path.exists()) {
42       if (path.isDirectory())
43         throw new IOException JavaDoc(path+" "+Res.res.getString("MSG_IsDir"));
44       if (!rewrite)
45         throw new IOException JavaDoc(path+" "+Res.res.getString("MSG_Exists"));
46     }
47     File JavaDoc dir = path.getParentFile();
48     if (dir != null) {
49       if (! dir.exists()) {
50         if (! dir.mkdirs())
51           throw new IOException JavaDoc(path+" "+Res.res.getString("MSG_CantBeCreated"));
52       }
53     }
54     return new CGFileWriter(path);
55   }
56
57   /** Tests if file with given name (relatively to the root) exists.
58     *
59     * @param name name of the file
60     * @return <tt>true</tt> if file exists
61     * @throws IOException IO exception
62     */

63   public boolean exists(String JavaDoc name) throws IOException JavaDoc {
64     File JavaDoc path = new File JavaDoc(_root, name);
65     return path.exists();
66   }
67
68   /** From CDL absolute name creates path.
69     *
70     * @param abs absolute name
71     * @param shortName short name (generated name can be different from abs name (reserved names))
72     * @param extension if add ".java" extension
73     */

74   public static String JavaDoc absToPath(SOFA.SOFAnode.Made.TIR.AbsoluteName abs, String JavaDoc shortName, boolean extension) throws java.rmi.RemoteException JavaDoc {
75     StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
76     for (int i=0;i<abs.size()-1;i++) {
77       sb.append(abs.elementAt(i));
78 // if (i < abs.size()-1)
79
sb.append(File.separator);
80     }
81     sb.append(shortName);
82     if (extension)
83       sb.append(".java");
84     return sb.toString();
85   }
86
87   /** From CDL absolute name creates package.
88     *
89     * @param abs absolute name
90     */

91   public static String JavaDoc absToPkg(SOFA.SOFAnode.Made.TIR.AbsoluteName abs) throws java.rmi.RemoteException JavaDoc {
92     StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
93     for (int i=0;i<abs.size()-1;i++) {
94       sb.append(abs.elementAt(i));
95       if (i < abs.size()-2)
96         sb.append(".");
97     }
98     return sb.toString();
99   }
100
101   /** From CDL absolute name creates path.
102     *
103     * @param abs absolute name
104     * @param shortName short name (generated name can be different from abs name (reserved names))
105     * @param pre prepend to short name
106     * @param post append to short name
107     * @param extension if add ".java" extension
108     */

109   public static String JavaDoc absToPath(SOFA.SOFAnode.Made.TIR.AbsoluteName abs, String JavaDoc shortName, String JavaDoc pre, String JavaDoc post, boolean extension) throws java.rmi.RemoteException JavaDoc {
110     StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
111     for (int i=0;i<abs.size()-1;i++) {
112       sb.append(abs.elementAt(i));
113 // if (i < abs.size()-1)
114
sb.append(File.separator);
115     }
116     sb.append(pre);
117     sb.append(shortName);
118     sb.append(post);
119     if (extension)
120       sb.append(".java");
121     return sb.toString();
122   }
123
124   /** From CDL absolute name of architecture creates path (without provider).
125     *
126     * @param abs absolute name
127     * @param shortName short name (generated name can be different from abs name (reserved names))
128     * @param extension if add ".java" extension
129     */

130   public static String JavaDoc archAbsToPath(SOFA.SOFAnode.Made.TIR.AbsoluteName abs, String JavaDoc shortName, boolean extension) throws java.rmi.RemoteException JavaDoc {
131     StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
132     for (int i=1;i<abs.size()-1;i++) {
133       sb.append(abs.elementAt(i));
134 // if (i < abs.size()-1)
135
sb.append(File.separator);
136     }
137     sb.append(shortName);
138     if (extension)
139       sb.append(".java");
140     return sb.toString();
141   }
142
143   /** From CDL absolute name of architecture creates package.
144     *
145     * @param abs absolute name
146     */

147   public static String JavaDoc archAbsToPkg(SOFA.SOFAnode.Made.TIR.AbsoluteName abs) throws java.rmi.RemoteException JavaDoc {
148     StringBuffer JavaDoc sb = new StringBuffer JavaDoc();
149     for (int i=1;i<abs.size()-1;i++) {
150       sb.append(abs.elementAt(i));
151       if (i < abs.size()-2)
152         sb.append(".");
153     }
154     return sb.toString();
155   }
156
157   /*
158   public static void main(String[] argv) throws Exception {
159     CGFileAccess fa = new CGFileAccess("/home/hnetynka/bla", true);
160     CGFileWriter fw = fa.newCGWriter("cz/cuni/sofa/Pokus.java");
161     fw.iwriteln("111111");
162     fw.incIndent();
163     fw.iwriteln("222222");
164     fw.incIndent();
165     fw.iwriteln("3333333");
166     fw.decIndent();
167     fw.iwriteln("222222");
168     fw.iwriteln("222222");
169     fw.decIndent();
170     fw.iwriteln("111111");
171     fw.close();
172     System.out.println("OK");
173   } */

174
175 }
176
Popular Tags