Changeset 3783


Ignore:
Timestamp:
May 25, 2008, 12:18:09 AM (13 years ago)
Author:
yura
Message:
Location:
devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core/RfpBuilder.java

    r3779 r3783  
    250250            "imported_modules");
    251251
    252     private static boolean isRfFile (IResource resource) {
    253         return resource instanceof IFile && resource.getFileExtension() != null
    254                 && resource.getFileExtension().equals("rf");
    255     }
    256 
    257     private static boolean isRfiFile (IResource resource) {
    258         return resource instanceof IFile && resource.getFileExtension() != null
    259                 && resource.getFileExtension().equals("rfi");
    260     }
    261 
    262252    private static void addMarker (IFile file, String message, int lineNumber, int charStart, int charEnd, int severity) {
    263253        try {
     
    299289    @SuppressWarnings("unchecked")
    300290    private void checkAndCompileModuleImplem (IResource resource) {
    301         if (!isRfFile(resource))
     291        if (!RfpProject.isRfFile(resource))
    302292            return;
    303293        IFile file = (IFile) resource;
     
    325315
    326316    public static AstImplem checkAndCompileModuleImplem (IProject project, IFile file, String document) {
    327         if (!isRfFile(file))
     317        if (!RfpProject.isRfFile(file))
    328318            return null;
    329319        deleteMarkers(file);
     
    351341            getProject().accept(new IResourceVisitor() {
    352342                public boolean visit (IResource resource) throws CoreException {
    353                     if (isRfFile(resource)) {
     343                    if (RfpProject.isRfFile(resource)) {
    354344                        final IFile rfFile = (IFile) resource;
    355345                        String moduleName = getRfpProject().getModuleName(rfFile);
     
    414404            getProject().accept(new IResourceVisitor() {
    415405                public boolean visit (IResource resource) throws CoreException {
    416                     if (isRfFile(resource)) {
     406                    if (RfpProject.isRfFile(resource)) {
    417407                        String moduleName = rfpProject.getModuleName((IFile) resource);
    418408                        if (moduleName != null)
     
    450440                        case IResourceDelta.ADDED:
    451441                        case IResourceDelta.CHANGED:
    452                             if (isRfFile(resource) || isRfiFile(resource)) {
     442                            if (RfpProject.isRfFile(resource) || RfpProject.isRfiFile(resource)) {
    453443                                String moduleName = rfpProject.getModuleName((IFile) resource);
    454444                                if (moduleName != null) {
     
    456446                                    if (dependentModuleSet != null)
    457447                                        modulesToRecompile.addAll(dependentModuleSet);
    458                                     if (isRfFile(resource))
     448                                    if (RfpProject.isRfFile(resource))
    459449                                        modulesToRecompile.add(moduleName);
    460450                                }
  • devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core/RfpPreBuilder.java

    r3779 r3783  
    44import java.io.Reader;
    55import java.io.UnsupportedEncodingException;
    6 import java.util.Map;
    76import java.util.Set;
    8 import java.util.SortedSet;
    9 import java.util.TreeSet;
    107
    118import org.eclipse.core.resources.IFile;
    12 import org.eclipse.core.resources.IProject;
    139import org.eclipse.core.resources.IResource;
    14 import org.eclipse.core.resources.IResourceDelta;
    15 import org.eclipse.core.resources.IResourceDeltaVisitor;
    16 import org.eclipse.core.resources.IResourceVisitor;
    17 import org.eclipse.core.resources.IWorkspace;
    18 import org.eclipse.core.resources.IWorkspaceRunnable;
    19 import org.eclipse.core.resources.IncrementalProjectBuilder;
    20 import org.eclipse.core.resources.ResourcesPlugin;
    2110import org.eclipse.core.runtime.CoreException;
    2211import org.eclipse.core.runtime.IProgressMonitor;
    23 import org.eclipse.core.runtime.OperationCanceledException;
    2412import org.eclipse.jdt.core.IClasspathContainer;
    2513import org.eclipse.jdt.core.IClasspathEntry;
     
    3220import org.refal.rfpdt.compiler.RefalInterfaceComplier;
    3321
    34 public class RfpPreBuilder extends IncrementalProjectBuilder {
    35     private RfpProject getRfpProject () {
    36         return RfpCore.getRfpProject(getProject());
    37     }
    38 
     22public class RfpPreBuilder extends RfpAbstractBuilder {
    3923    private static class IdeCompilerEnvironment implements CompilerEnvironment {
    4024        private final RfpProject project;
     
    118102    }
    119103
    120     private static boolean isRfFile (IResource resource) {
    121         return resource instanceof IFile && resource.getFileExtension() != null
    122                 && resource.getFileExtension().equals("rf");
    123     }
    124 
    125     private void checkAndCompileModuleImplem (String moduleName) {
     104    protected void checkAndCompileModuleImplem (String moduleName) {
    126105        getRfpProject().deleteClassFiles(moduleName);
    127106        IdeCompilerEnvironment env = new IdeCompilerEnvironment(getRfpProject(), moduleName);
     
    131110    }
    132111
    133     /*
    134      * (non-Javadoc)
    135      *
    136      * @see org.eclipse.core.internal.events.InternalBuilder#build(int, java.util.Map,
    137      *      org.eclipse.core.runtime.IProgressMonitor)
    138      */
    139     @SuppressWarnings("unchecked")
    140     @Override
    141     protected IProject[] build (int kind, Map args, IProgressMonitor monitor) throws CoreException {
    142         if (kind == FULL_BUILD)
    143             fullBuild(monitor);
    144         else {
    145             RfpProject rfpProject = getRfpProject();
    146             IResourceDelta delta = getDelta(rfpProject.getProject());
    147             if (delta == null || delta.findMember(rfpProject.getFile(".classpath").getProjectRelativePath()) != null)
    148                 fullBuild(monitor);
    149             else
    150                 incrementalBuild(delta, monitor);
    151         }
    152         return null;
    153     }
    154 
    155112    @Override
    156113    protected void clean (IProgressMonitor monitor) throws CoreException {
    157114        getProject().deleteMarkers(RfpCore.MARKER_ID, false, IResource.DEPTH_INFINITE);
    158115        getRfpProject().cleanOutputFolder();
    159         // We are relying on JavaBuilder for cleaning.
    160         // project.accept(new IResourceVisitor() {
    161         // public boolean visit (IResource resource) throws CoreException {
    162         // if (isRfFile(resource))
    163         // deleteClassFiles((IFile) resource);
    164         // return true;
    165         // }
    166         // });
    167     }
    168 
    169     private boolean checkCancel (IProgressMonitor monitor) {
    170         if (monitor.isCanceled())
    171             // Discard build state if necessary
    172             throw new OperationCanceledException();
    173         // if (isInterrupted()) { // FIXME: should cancel current job
    174         // and rescedule auto-builds.
    175         // return true;
    176         // }
    177         return false;
    178     }
    179 
    180     private void compileEachModule (SortedSet<String> modulesToRecompile, IProgressMonitor monitor) {
    181         monitor.beginTask("Recompile modules", modulesToRecompile.size());
    182         for (String moduleName : modulesToRecompile) {
    183             if (checkCancel(monitor))
    184                 return;
    185             monitor.subTask("Compiling the module " + moduleName);
    186             checkAndCompileModuleImplem(moduleName);
    187             monitor.worked(1);
    188         }
    189         monitor.done();
    190     }
    191 
    192     private void compileModules (final SortedSet<String> modulesToRecompile, IProgressMonitor monitor)
    193             throws CoreException {
    194         // workspace.run(action, workspace.getRoot(), IWorkspace.AVOID_UPDATE, monitor);
    195         IWorkspace workspace = ResourcesPlugin.getWorkspace();
    196         workspace.run(new IWorkspaceRunnable() {
    197             public void run (IProgressMonitor monitor) throws CoreException {
    198                 compileEachModule(modulesToRecompile, monitor);
    199             }
    200         }, workspace.getRoot(), 0, monitor);
    201     }
    202 
    203     private void fullBuild (final IProgressMonitor monitor) throws CoreException {
    204         final SortedSet<String> modulesToRecompile = new TreeSet<String>();
    205         final RfpProject rfpProject = getRfpProject();
    206         try {
    207             getProject().accept(new IResourceVisitor() {
    208                 public boolean visit (IResource resource) throws CoreException {
    209                     if (isRfFile(resource)) {
    210                         String moduleName = rfpProject.getModuleName((IFile) resource);
    211                         if (moduleName != null)
    212                             modulesToRecompile.add(moduleName);
    213                     }
    214                     return true;
    215                 }
    216             });
    217         } catch (CoreException e) {
    218             RfpCore.log(e);
    219         }
    220         compileModules(modulesToRecompile, monitor);
    221     }
    222 
    223     private void incrementalBuild (IResourceDelta delta, IProgressMonitor monitor) throws CoreException {
    224         final SortedSet<String> modulesToRecompile = new TreeSet<String>();
    225         final RfpProject rfpProject = getRfpProject();
    226         try {
    227             delta.accept(new IResourceDeltaVisitor() {
    228                 public boolean visit (IResourceDelta delta) throws CoreException {
    229                     IResource resource = delta.getResource();
    230                     switch (delta.getKind()) {
    231                         case IResourceDelta.ADDED:
    232                         case IResourceDelta.CHANGED:
    233                             if (isRfFile(resource)) {
    234                                 String moduleName = rfpProject.getModuleName((IFile) resource);
    235                                 if (moduleName != null)
    236                                     modulesToRecompile.add(moduleName);
    237                             }
    238                             break;
    239                         default:
    240                             break;
    241                     }
    242                     return true;
    243                 }
    244             });
    245         } catch (CoreException e) {}
    246         compileModules(modulesToRecompile, monitor);
    247116    }
    248117}
  • devel-tools/trunk/eclipse/org.refal.rfpdt.core/src/org/refal/rfpdt/core/RfpProject.java

    r3781 r3783  
    4848            folder.accept(new IResourceVisitor() {
    4949                public boolean visit (IResource resource) throws CoreException {
    50                     if (resource.getType() == IResource.FILE && resource.getFileExtension().equals("class")) {
     50                    if (resource.getType() == IResource.FILE && resource.getFileExtension() != null
     51                            && resource.getFileExtension().equals("class")) {
    5152                        resource.delete(IResource.FORCE, null);
    5253                        return false;
     
    187188        addSource = newValue;
    188189    }
     190
     191    public static boolean isRfFile (IResource resource) {
     192        return resource instanceof IFile && resource.getFileExtension() != null
     193                && resource.getFileExtension().equals("rf");
     194    }
     195
     196    public static boolean isRfiFile (IResource resource) {
     197        return resource instanceof IFile && resource.getFileExtension() != null
     198                && resource.getFileExtension().equals("rfi");
     199    }
    189200}
Note: See TracChangeset for help on using the changeset viewer.