source: ccr/trunk/nhin-vista/projects/NHINC/Current/Product/Production/Common/DevTools/src/gov/hhs/fha/nhinc/devtools/FindAndReplaceFile.java@ 507

Last change on this file since 507 was 507, checked in by George Lilly, 15 years ago

NHIN gateway and adaptor for use on linux with VistA EHR and RPMS

File size: 5.0 KB
Line 
1/*
2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
4 */
5package gov.hhs.fha.nhinc.devtools;
6
7import java.io.File;
8import java.io.FileInputStream;
9import java.io.FileOutputStream;
10import java.io.IOException;
11import java.io.InputStream;
12import java.io.OutputStream;
13
14/**
15 *
16 * @author westbergl
17 */
18public class FindAndReplaceFile
19{
20 /**
21 * Copy contents of the file from the src to the dest. If the dest exists, it will
22 * be deleted first.
23 *
24 * @param fSrc The source file
25 * @param fDst The destination file.
26 * @return true if the file was copied.
27 * @throws java.io.IOException
28 */
29 private static boolean copy(File fSrc, File fDst)
30 throws IOException
31 {
32 if (!fSrc.exists())
33 {
34 return false;
35 }
36
37 if (fDst.exists())
38 {
39 // Delete the file first....
40 fDst.delete();
41 }
42
43 InputStream oIn = new FileInputStream(fSrc);
44 OutputStream oOut = new FileOutputStream(fDst);
45
46 // Transfer bytes from in to out
47 byte[] buf = new byte[1024];
48 int iLen;
49 while ((iLen = oIn.read(buf)) > 0)
50 {
51 oOut.write(buf, 0, iLen);
52 }
53 oIn.close();
54 oOut.close();
55
56 return true;
57 }
58
59
60
61 /**
62 * This method looks in the current directory and all subdirectories for the
63 * specified file and replaces it with the copy specified.
64 *
65 * @param fDirToLook The directory to start looking.
66 * @param fFileName The path and name of the file to copy.
67 * @return The number of replacements that were made.
68 * @throws java.lang.Throwable
69 */
70 public static int searchAndReplace(File fDirToLook, File fFileName)
71 throws Throwable
72 {
73 if (fDirToLook == null)
74 {
75 return 0;
76 }
77
78 if (fDirToLook.isDirectory())
79 {
80 int iCopies = 0;
81
82 File[] faFilesInDir = fDirToLook.listFiles();
83 if ((faFilesInDir != null) && (faFilesInDir.length > 0))
84 {
85 for (File fFile : faFilesInDir)
86 {
87 iCopies += searchAndReplace(fFile, fFileName);
88 }
89 }
90
91 return iCopies;
92 }
93 else if (fDirToLook.isFile())
94 {
95 // System.out.println("Debug: fDirToLook.getCanonicalPath()" + fDirToLook.getCanonicalPath());
96 if (fDirToLook.getCanonicalPath().equalsIgnoreCase(fFileName.getCanonicalPath()))
97 {
98 return 0; // Do not change the file itself...
99 }
100 else if (fDirToLook.getName().equalsIgnoreCase(fFileName.getName()))
101 {
102 try
103 {
104 boolean bCopied = copy(fFileName, fDirToLook);
105 if (bCopied)
106 {
107 System.out.println("Replaced file: " + fDirToLook.getCanonicalPath());
108 return 1;
109 }
110 else
111 {
112 return 0;
113 }
114 }
115 catch (Exception e)
116 {
117 System.out.println("Failed to replace file: " + fDirToLook.getCanonicalPath() + " Error: " + e.getMessage());
118 }
119 }
120 }
121
122 return 0;
123 }
124
125 /**
126 * Print the usage information for this project.
127 */
128 public static void printUsage()
129 {
130 System.out.println("Usage: gov.hhs.fha.nhinc.devtools.FindAndReplaceFile <dir-to-look> <file>");
131 System.out.println("Where:");
132 System.out.println("<dir-to-look> is the directory where the tool should start looking for the file.");
133 System.out.println(" it will search all sub-directories of this one.");
134 System.out.println("<file> the path and location of the file that is to be used for the replacement.");
135 System.out.println(" the name of this file is also the name of the file that will be replaced.");
136 }
137
138 /**
139 * Main method.
140 *
141 * @param args
142 */
143 public static void main(String[] args)
144 {
145 if (args.length != 2)
146 {
147 printUsage();
148 System.exit(-1);
149 }
150
151 String sDirToLook = "";
152 String sFileName = "";
153 sDirToLook = args[0];
154 sFileName = args[1];
155
156 File fDirToLook = new File(sDirToLook);
157 File fFileName = new File(sFileName);
158
159 try
160 {
161 int iCount = searchAndReplace(fDirToLook, fFileName);
162 System.out.println("Replaced " + iCount + " copies of this file.");
163 System.exit(0);
164 }
165 catch (Throwable t)
166 {
167 System.out.println("An unexpected exception occurred. Error: " + t.getMessage());
168 t.printStackTrace();
169 System.exit(-1);
170 }
171 }
172
173
174}
Note: See TracBrowser for help on using the repository browser.