Changeset 2116
- Timestamp:
- 09/24/08 13:57:20 (2 months ago)
- Files:
-
- trunk/slide-plugin/src/com/tresys/slide/plugin/builder/HeaderModuleProjectBuilder.java (modified) (4 diffs)
- trunk/slide-plugin/src/com/tresys/slide/plugin/builder/PolicyProjectBuilder.java (modified) (2 diffs)
- trunk/slide-plugin/src/com/tresys/slide/plugin/nature/HeaderModuleProjectNature.java (modified) (1 diff)
- trunk/slide-plugin/src/com/tresys/slide/plugin/nature/contentprovider/FullContentProvider.java (modified) (10 diffs)
- trunk/slide-plugin/src/com/tresys/slide/plugin/nature/contentprovider/HeaderContentProvider.java (modified) (12 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/slide-plugin/src/com/tresys/slide/plugin/builder/HeaderModuleProjectBuilder.java
r2110 r2116 12 12 import java.util.Vector; 13 13 14 import org.eclipse.core.resources.IFile; 14 15 import org.eclipse.core.resources.IProject; 15 16 import org.eclipse.core.resources.IResource; … … 24 25 import com.tresys.slide.plugin.nature.BaseProjectNature; 25 26 import com.tresys.slide.plugin.nature.HeaderModuleProjectNature; 27 import com.tresys.slide.plugin.nature.SLIDEProjectNature; 26 28 import com.tresys.slide.plugin.preferences.PreferenceConstants; 27 29 … … 120 122 delta.accept(visitor); 121 123 124 SLIDEProjectNature nat = (SLIDEProjectNature)getProject ().getNature (SLIDEProjectNature.NATURE_ID); 125 122 126 monitor.subTask(BuildMessages.make_clean); 123 127 if (visitor.m_bMakeClean) … … 126 130 monitor.worked(TOTAL_WORK * 1); 127 131 128 if ( monitor.isCanceled())132 if (monitor.isCanceled()) 129 133 return; 130 134 131 135 monitor.subTask(BuildMessages.make_xml); 132 136 if (visitor.m_bMakeXML) 137 { 138 IFile xmlFile = nat.getPolicyXMLPath (null); 139 if (xmlFile.exists ()) 140 xmlFile.delete (true, null); 133 141 RunCommand (new String[] {getMakeCommand (), TARGET_XML}); 142 } 134 143 monitor.worked(TOTAL_WORK * 2); 135 144 trunk/slide-plugin/src/com/tresys/slide/plugin/builder/PolicyProjectBuilder.java
r2103 r2116 162 162 } 163 163 164 protected void incrementalBuild(IResourceDelta delta, IProgressMonitor monitor) throws CoreException 164 protected void incrementalBuild(IResourceDelta delta, IProgressMonitor monitor) 165 throws CoreException 165 166 { 166 167 try … … 202 203 monitor.subTask(BuildMessages.make_xml); 203 204 IProject proj = getProject (); 204 SLIDEProjectNature snat = (SLIDEProjectNature)proj.getNature(SLIDEProjectNature.NATURE_ID);205 if ( snat != null)205 SLIDEProjectNature nat = (SLIDEProjectNature)proj.getNature(SLIDEProjectNature.NATURE_ID); 206 if (nat != null) 206 207 { 207 208 if (visitor.m_bMakeXML) 209 { 210 IFile xmlFile = nat.getPolicyXMLPath (null); 211 if (xmlFile.exists ()) 212 xmlFile.delete (true, null); 208 213 RunCommand (new String[]{getMakeCommand (), TARGET_XML}); 209 210 BuildConfFile buildFile = new BuildConfFile (snat.GetBuildConfPath(proj)); 214 } 215 216 BuildConfFile buildFile = new BuildConfFile (nat.GetBuildConfPath(proj)); 211 217 if (buildFile != null && buildFile.isMonolithic()) 212 218 buildFileContexts = true; trunk/slide-plugin/src/com/tresys/slide/plugin/nature/HeaderModuleProjectNature.java
r2091 r2116 218 218 219 219 // must not happen 220 if (policyPath == null)220 if (policyPath == null) 221 221 return null; 222 222 223 return policyXML; //.getRawLocation().toFile();223 return policyXML; 224 224 } 225 225 trunk/slide-plugin/src/com/tresys/slide/plugin/nature/contentprovider/FullContentProvider.java
r2072 r2116 19 19 import org.eclipse.core.resources.IResource; 20 20 import org.eclipse.core.resources.IResourceDelta; 21 import org.eclipse.core.resources.IResourceDeltaVisitor; 21 22 import org.eclipse.core.runtime.CoreException; 22 23 import org.eclipse.jface.viewers.TreeViewer; 23 24 25 import com.tresys.slide.plugin.SLIDEPlugin; 24 26 import com.tresys.slide.plugin.nature.BaseProjectNature; 25 27 import com.tresys.slide.plugin.views.policyexplorer.PLayer; … … 31 33 extends AbstractPolicyContentProvider 32 34 { 33 private Vector mLayers = new Vector(); 34 private boolean mNeedRefresh = false; 35 protected Vector mLayers = new Vector(); 35 36 36 37 public FullContentProvider (IProject i_proj) … … 245 246 public boolean processDelta(IResourceDelta delta, final TreeViewer viewer) 246 247 { 247 mNeedRefresh = false; 248 processLayerDelta(delta); 249 return mNeedRefresh; 250 // viewer.getControl().getDisplay().asyncExec( // asyncExec?? 251 // new Runnable() 252 // { 253 // public void run() 254 // { 255 // if(viewer == null) 256 // return; 257 // viewer.refresh(); 258 // } 259 // } 260 // ); 261 } 262 263 private void processLayerDelta(IResourceDelta delta) 264 { 265 IResourceDelta[] changedChildren = delta.getAffectedChildren(); 266 267 for(int i = 0; i < changedChildren.length; i++) 268 { 269 IResource rsrc = changedChildren[i].getResource(); 248 try 249 { 250 DeltaVisitor visitor = new DeltaVisitor (); 251 delta.accept (visitor); 252 return visitor.mNeedRefresh; 253 } 254 catch (CoreException ce) 255 { 256 SLIDEPlugin.log(ce); 257 if( SLIDEPlugin.getDefault().isDebugging() ) 258 ce.printStackTrace(); 259 return false; 260 } 261 262 } 263 264 265 protected void getModulesFromLayer(PLayer layer, IFolder layerFolder) 266 { 267 try 268 { 269 IResource[] children = layerFolder.members(); 270 for (int i = 0; i < children.length; i++) 271 { 272 if(!(children[i] instanceof IFile)) 273 continue; 274 275 if (children[i].getFileExtension() != null && 276 children[i].getFileExtension().equals(BaseProjectNature.IF_EXTENSION)) 277 { 278 PModule currModule = new PModule((IFile)children[i], layer); 279 layer.Add(currModule); 280 } 281 } 282 } catch (CoreException ce) { 283 } 284 } 285 286 public PModule getModule (Module comp) 287 { 288 Iterator itr = mLayers.iterator(); 289 while( itr.hasNext()) 290 { 291 PLayer lay = ((PLayer)itr.next()); 292 PModule mod = (PModule)lay.GetModule(comp.getName()); 293 if( mod != null ) 294 return mod; 295 } 296 return null; 297 } 298 299 public PModule getModule(IFile file) 300 { 301 for (Iterator itr = mLayers.iterator(); itr.hasNext(); ) 302 { 303 PLayer lay = ((PLayer)itr.next()); 304 for (Iterator litr = lay.getModules().values().iterator(); litr.hasNext(); ) 305 { 306 Object obj = litr.next(); 307 if (obj instanceof PModule) 308 { 309 PModule mod = (PModule)obj; 310 // if( mod.getFileName().equals(file.getName())) 311 if (mod.contains(file)) 312 return mod; 313 } 314 } 315 } 316 return null; 317 } 318 319 private void initLayers () 320 { 321 IFolder modulesDir = m_project.getFolder("policy/modules"); 322 323 try 324 { 325 IResource[] childFolders = modulesDir.members(IResource.FOLDER); 326 327 for (int i = 0; i < childFolders.length; i++) 328 { 329 if (!(childFolders[i] instanceof IFolder)) 330 continue; 331 332 String folderName = childFolders[i].getName(); 333 334 if (folderName.equals("CVS") || folderName.startsWith(".")) 335 { 336 continue; 337 } 338 339 // first time add to layer list 340 PLayer currLayer = new PLayer((IFolder) childFolders[i]); 341 342 // add modules to layer 343 getModulesFromLayer(currLayer, (IFolder) childFolders[i]); 344 345 mLayers.add(currLayer); 346 } 347 } 348 catch (CoreException ce) 349 {} 350 } 351 352 353 private class DeltaVisitor 354 implements IResourceDeltaVisitor 355 { 356 protected boolean mNeedRefresh = false; 357 358 public DeltaVisitor () 359 {} 360 361 public boolean visit (IResourceDelta delta) 362 { 363 IResource rsrc = delta.getResource(); 270 364 271 365 if (rsrc instanceof IProject) 272 366 { 273 if ( changedChildren[i].getFlags() == IResourceDelta.OPEN )367 if (delta.getFlags() == IResourceDelta.OPEN ) 274 368 { 275 369 mNeedRefresh = true; 276 return; 277 } 278 279 if ( ((IProject) rsrc).isOpen() ) 280 { 281 processLayerDelta(changedChildren[i]); 282 } 370 return false; 371 } 372 373 if (!((IProject) rsrc).isOpen()) 374 return false; 283 375 } 284 376 // adding/removing module … … 289 381 PLayer currLayer = null; 290 382 { 291 for (int j = 0; j < mLayers.size(); j++)383 for (int j = 0; j < mLayers.size(); j++) 292 384 { 293 385 PLayer tmpLayer = (PLayer)mLayers.elementAt(j); 294 386 295 387 if (tmpLayer.getProject().equals(rsrc.getProject()) 296 388 && tmpLayer.getName().equals(rsrc.getParent().getName())) … … 301 393 } 302 394 } 303 304 IResource changedResource = changedChildren[i].getResource(); 305 395 306 396 // added 307 if(currLayer != null && changedChildren[i].getKind() == IResourceDelta.ADDED)308 { 309 310 String moduleName = changedResource.getName();397 if(currLayer != null && delta.getKind() == IResourceDelta.ADDED) 398 { 399 400 String moduleName = rsrc.getName(); 311 401 if(moduleName.lastIndexOf(".") > 0) 312 402 moduleName = moduleName.substring(0, moduleName.lastIndexOf(".")); 313 403 else 314 continue;315 404 return false; 405 316 406 PModule currModule = new PModule((IFile) rsrc, currLayer); 317 407 currLayer.Add(currModule); … … 319 409 } 320 410 // deleted 321 else if (currLayer != null && changedChildren[i].getKind() == IResourceDelta.REMOVED)322 { 323 String moduleName = changedResource.getName();411 else if (currLayer != null && delta.getKind() == IResourceDelta.REMOVED) 412 { 413 String moduleName = rsrc.getName(); 324 414 moduleName = moduleName.substring(0, moduleName.length() - 3); 325 415 326 416 Iterator itr = mLayers.iterator(); 327 while (itr.hasNext())417 while (itr.hasNext()) 328 418 { 329 419 PLayer lay = ((PLayer)itr.next()); … … 337 427 } 338 428 } 339 else if (changedChildren[i].getKind() == IResourceDelta.REMOVED)429 else if (delta.getKind() == IResourceDelta.REMOVED) 340 430 mNeedRefresh = true; 341 431 } … … 350 440 IProject proj = changedFolder.getProject(); 351 441 352 if( changedChildren[i].getKind() == IResourceDelta.ADDED)353 { 354 if (!changedFolder.getParent().getName().equals("modules"))355 continue;442 if(delta.getKind() == IResourceDelta.ADDED) 443 { 444 if (!changedFolder.getParent().getName().equals("modules")) 445 return false; 356 446 357 447 Iterator itr = mLayers.iterator(); … … 368 458 } 369 459 370 if ( !layerMatch)460 if (!layerMatch) 371 461 { 372 462 PLayer currLayer = new PLayer(changedFolder); … … 376 466 } 377 467 } 378 processLayerDelta(changedChildren[i]); 379 } 380 } 381 } 382 383 private void getModulesFromLayer(PLayer layer, IFolder layerFolder) 384 { 385 try 386 { 387 IResource[] children = layerFolder.members(); 388 for (int i = 0; i < children.length; i++) 389 { 390 if(!(children[i] instanceof IFile)) 391 continue; 392 393 if (children[i].getFileExtension() != null && 394 children[i].getFileExtension().equals(BaseProjectNature.IF_EXTENSION)) 395 { 396 PModule currModule = new PModule((IFile)children[i], layer); 397 layer.Add(currModule); 398 } 399 } 400 } catch (CoreException ce) { 401 } 402 } 403 404 public PModule getModule (Module comp) 405 { 406 Iterator itr = mLayers.iterator(); 407 while( itr.hasNext()) 408 { 409 PLayer lay = ((PLayer)itr.next()); 410 PModule mod = (PModule)lay.GetModule(comp.getName()); 411 if( mod != null ) 412 return mod; 413 } 414 return null; 415 } 416 417 public PModule getModule(IFile file) 418 { 419 for (Iterator itr = mLayers.iterator(); itr.hasNext(); ) 420 { 421 PLayer lay = ((PLayer)itr.next()); 422 for (Iterator litr = lay.getModules().values().iterator(); litr.hasNext(); ) 423 { 424 Object obj = litr.next(); 425 if (obj instanceof PModule) 426 { 427 PModule mod = (PModule)obj; 428 // if( mod.getFileName().equals(file.getName())) 429 if (mod.contains(file)) 430 return mod; 431 } 432 } 433 } 434 return null; 435 } 436 437 private void initLayers () 438 { 439 IFolder modulesDir = m_project.getFolder("policy/modules"); 440 441 try 442 { 443 IResource[] childFolders = modulesDir.members(IResource.FOLDER); 444 445 for (int i = 0; i < childFolders.length; i++) 446 { 447 if (!(childFolders[i] instanceof IFolder)) 448 continue; 449 450 String folderName = childFolders[i].getName(); 451 452 if (folderName.equals("CVS") || folderName.startsWith(".")) 453 { 454 continue; 455 } 456 457 // first time add to layer list 458 PLayer currLayer = new PLayer((IFolder) childFolders[i]); 459 460 // add modules to layer 461 getModulesFromLayer(currLayer, (IFolder) childFolders[i]); 462 463 mLayers.add(currLayer); 464 } 465 } 466 catch (CoreException ce) 467 {} 468 469 return true; 470 } 471 472 return true; 473 } 468 474 } 469 475 } trunk/slide-plugin/src/com/tresys/slide/plugin/nature/contentprovider/HeaderContentProvider.java
r2072 r2116 19 19 import org.eclipse.core.resources.IResource; 20 20 import org.eclipse.core.resources.IResourceDelta; 21 import org.eclipse.core.resources.IResourceDeltaVisitor; 21 22 import org.eclipse.core.runtime.CoreException; 22 23 import org.eclipse.jface.viewers.TreeViewer; 23 24 25 import com.tresys.slide.plugin.SLIDEPlugin; 24 26 import com.tresys.slide.plugin.nature.BaseProjectNature; 25 27 import com.tresys.slide.plugin.views.policyexplorer.PLayer; … … 31 33 { 32 34 33 pr ivateVector mLayers = new Vector();34 pr ivateVector mModules = new Vector();35 private boolean mNeedRefresh = true;35 protected Vector mLayers = new Vector(); 36 protected Vector mModules = new Vector(); 37 // private boolean mNeedRefresh = true; 36 38 37 39 private static final String[] HEADER_FILTER = { … … 128 130 } 129 131 } 130 else if (parentElement instanceof PLayer)132 else if (parentElement instanceof PLayer) 131 133 { 132 134 Collection modules = ((PLayer) parentElement).getModules().values(); … … 138 140 public Object getParent(Object element) 139 141 { 140 141 142 if( element instanceof PLayer) 142 143 { … … 224 225 public boolean processDelta(IResourceDelta delta, final TreeViewer viewer) 225 226 { 226 mNeedRefresh = false; 227 processLayerDelta(delta); 228 return mNeedRefresh; 227 try 228 { 229 DeltaVisitor visitor = new DeltaVisitor (); 230 delta.accept (visitor); 231 return visitor.mNeedRefresh; 232 } 233 catch (CoreException ce) 234 { 235 SLIDEPlugin.log(ce); 236 if( SLIDEPlugin.getDefault().isDebugging() ) 237 ce.printStackTrace(); 238 return false; 239 } 229 240 } 230 241 … … 300 311 } 301 312 302 303 private void processLayerDelta(IResourceDelta delta) 304 { 305 IResourceDelta[] changedChildren = delta.getAffectedChildren(); 306 307 for(int i = 0; i < changedChildren.length; i++) 308 { 309 IResource rsrc = changedChildren[i].getResource(); 313 private class DeltaVisitor 314 implements IResourceDeltaVisitor 315 { 316 protected boolean mNeedRefresh = false; 317 318 DeltaVisitor () 319 {} 320 321 322 public boolean visit (IResourceDelta delta) 323 { 324 IResource rsrc = delta.getResource (); 310 325 boolean bIsModule = false; 311 326 312 327 if (rsrc instanceof IProject) 313 328 { 314 if ( changedChildren[i].getFlags() == IResourceDelta.OPEN)329 if (delta.getFlags() == IResourceDelta.OPEN) 315 330 { 316 331 mNeedRefresh = true; 317 return; 318 } 319 320 if ( ((IProject) rsrc).isOpen() ) 321 { 322 processLayerDelta(changedChildren[i]); 323 } 324 else 325 return; 332 return false; 333 } 334 335 if (!((IProject) rsrc).isOpen() ) 336 return false; 326 337 } 327 338 // in case of layer 328 else if (rsrc instanceof IFolder)329 { 330 processLayerDelta(changedChildren[i]);339 else if (rsrc instanceof IFolder) 340 { 341 return true; 331 342 } 332 343 else if (rsrc instanceof IFile) … … 344 355 { 345 356 currLayer = layerExist(layerDir); 346 if ( currLayer == null)357 if (currLayer == null) 347 358 { 348 359 // we have a new layer … … 356 367 } 357 368 358 IResource changedResource = changedChildren[i].getResource();359 360 369 // module added 361 if( changedChildren[i].getKind() == IResourceDelta.ADDED && bIsModule)362 { 363 if( currLayer == null)370 if(delta.getKind() == IResourceDelta.ADDED && bIsModule) 371 { 372 if(currLayer == null) 364 373 { 365 374 // we know new module has no layer 366 375 // and check if module already exist caused by multiple resource change events 367 PModule mod = moduleExistinModules((IFile) changedResource);368 if (mod != null)369 continue;370 PModule currModule = new PModule((IFile) changedResource, currLayer);376 PModule mod = moduleExistinModules((IFile)rsrc); 377 if (mod != null) 378 return false; 379 PModule currModule = new PModule((IFile)rsrc, currLayer); 371 380 mModules.add(currModule); 372 381 mNeedRefresh = true; 373 return ;382 return false; 374 383 } 375 384 else 376 385 { 377 386 // we have layer just add new module to it. 378 String moduleName = changedResource.getName().substring(0, changedResource.getName().length() - 3);379 if( currLayer.GetModule(moduleName) != null)380 return ;381 382 PModule currModule = new PModule ((IFile)changedResource, currLayer);387 String moduleName = rsrc.getName().substring(0, rsrc.getName().length() - 3); 388 if(currLayer.GetModule(moduleName) != null) 389 return false; 390 391 PModule currModule = new PModule ((IFile)rsrc, currLayer); 383 392 currLayer.Add(currModule); 384 393 mNeedRefresh = true; 385 return ;394 return false; 386 395 } 387 396 } 388 397 // module removed 389 else if (changedChildren[i].getKind() == IResourceDelta.REMOVED && bIsModule)390 { 391 String moduleName = changedResource.getName();392 393 if (moduleName.lastIndexOf(".") > 0)398 else if (delta.getKind() == IResourceDelta.REMOVED && bIsModule) 399 { 400 String moduleName = rsrc.getName(); 401 402 if (moduleName.lastIndexOf(".") > 0) 394 403 moduleName = moduleName.substring(0, moduleName.lastIndexOf(".")); 395 404 … … 397 406 398 407 Iterator itr = mLayers.iterator(); 399 while ( !removed && itr.hasNext())408 while (!removed && itr.hasNext()) 400 409 { 401 410 PLayer lay = (PLayer)itr.next(); 402 if ( lay.getModules().remove(moduleName) != null)411 if (lay.getModules().remove(moduleName) != null) 403 412 { 404 413 removed = true; 414 mNeedRefresh = true; 405 415 } 406 416 } 407 417 408 if( !removed)418 if(!removed) 409 419 { 410 420 itr = mModules.iterator(); 411 while ( itr.hasNext())421 while (itr.hasNext()) 412 422 { 413 423 PModule module = ((PModule)itr.next()); 414 if( module.getName().equals(moduleName) && module.getProject().equals(changedResource.getProject()))424 if(module.getName().equals(moduleName) && module.getProject().equals(rsrc.getProject())) 415 425 { 416 426 mModules.remove(module); 417 427 mNeedRefresh = true; 418 return ;428 return false; 419 429 } 420 430 } 421 431 } 422 } 423 } 432 433 } 434 } 435 return true; 424 436 } 425 437 } … … 430 442 // starts with 431 443 { 432 if ( st.startsWith("."))433 return false; 434 if (st.startsWith("Rules."))444 if (st.startsWith(".")) 445 return false; 446 if (st.startsWith("Rules.")) 435 447 return false; 436 448 } 437 449 &nbs
