| 1 28 29 package com.idaremedia.antx.mktemp; 30 31 import java.io.File ; 32 import java.io.IOException ; 33 34 import org.apache.tools.ant.BuildException; 35 import org.apache.tools.ant.Project; 36 import org.apache.tools.ant.types.PropertySet; 37 import org.apache.tools.ant.types.Reference; 38 import org.apache.tools.ant.util.FileUtils; 39 40 import com.idaremedia.antx.AntX; 41 import com.idaremedia.antx.helpers.InnerString; 42 import com.idaremedia.antx.starters.StringItemListHandle; 43 44 75 76 public class MkFileTask extends MkNewObject 77 { 78 81 public MkFileTask() 82 { 83 super(AntX.mktemp); 84 } 85 86 87 90 protected MkFileTask(String iam) 91 { 92 super(iam); 93 } 94 95 96 101 public void setPath(File fp) 102 { 103 require_(fp!=null,"setPath- nonzro path"); 104 m_filepath = fp; 105 } 106 107 108 113 public File getPath() 114 { 115 return m_filepath; 116 } 117 118 119 125 public File getEffectivePath() 126 { 127 if (getPath()==null || getProject()==null) { 128 return null; 129 } 130 return getProject().resolveFile(getPath().getPath()); 131 } 132 133 134 140 public void setPersist(boolean persist) 141 { 142 m_autoDelete = !persist; 143 } 144 145 146 150 public boolean isAutoDelete() 151 { 152 return m_autoDelete; 153 } 154 155 156 161 public void setOverwrite(boolean stompOnOlder) 162 { 163 m_overWrite = stompOnOlder; 164 } 165 166 167 171 public boolean willOverwrite() 172 { 173 return m_overWrite; 174 } 175 176 177 184 protected final void createFile(File newFile) throws BuildException 185 { 186 require_(newFile!=null,"newFile- nonzro fil"); 187 FileUtils fsu= getFileUtils(); 188 189 try { 190 if (getPrototypePlainFile()!=null) { 191 fsu.copyFile(getPrototypePlainFile(),newFile, 192 getCopyFilters(),willOverwrite()); 193 } 194 else if (getPrototypeResourceFile()!=null) { 195 fsu.copyFile(getPrototypeResourceFile(),newFile, 196 getCopyFilters(),willOverwrite()); 197 } else { 198 if (willOverwrite() || !newFile.exists()) { 199 newFile.createNewFile(); 200 copyPrototypeLines(newFile,false); 201 } 202 } 203 } catch(IOException iox) { 204 throw new BuildException(iox, getLocation()); 205 } 206 207 if (isAutoDelete()) { 208 newFile.deleteOnExit(); 209 } 210 } 211 212 213 217 public void addLine(InnerString line) 218 { 219 require_(line!=null,"addLn- nonzro ln"); 220 getPrototypeLinesNoNull().add(line); 221 } 222 223 224 228 public void addLines(StringItemListHandle lines) 229 { 230 require_(lines!=null,"addLns- nonzro lns"); 231 getPrototypeLinesNoNull().add(lines); 232 } 233 234 235 241 public final void setLines(Reference ref) 242 { 243 StringItemListHandle lines = new StringItemListHandle(ref); 244 getPrototypeLinesNoNull().add(lines); 245 } 246 247 248 253 public void addConfiguredPropertySet(PropertySet propertyset) 254 { 255 require_(propertyset!=null,"addPropSet- nonzro pset"); 256 getPrototypeLinesNoNull().add(propertyset); 257 } 258 259 260 264 public void execute() 265 { 266 verifyCanExecute_("execute"); 267 File newFile = getEffectivePath(); 268 createFile(newFile); 269 saveFinalPath(newFile,false); 270 } 271 272 273 278 protected void verifyCanExecute_(String calr) 279 { 280 verifyInProject_(calr); 281 if (getPath()==null) { 282 String error = uistrs().get("task.needs.this.attr",getTaskName(),"path"); 283 log(error,Project.MSG_ERR); 284 throw new BuildException(error,getLocation()); 285 } 286 } 287 288 289 private File m_filepath; 290 private boolean m_overWrite=true; private boolean m_autoDelete;} 293 294 295 | Popular Tags |