net.rim.ejde.internal.legacy.Util.java Source code

Java tutorial

Introduction

Here is the source code for net.rim.ejde.internal.legacy.Util.java

Source

/*
* Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License, Version 1.0,
* which accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*
*/
package net.rim.ejde.internal.legacy;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import net.rim.ejde.internal.core.ContextManager;
import net.rim.ejde.internal.model.BlackBerryProject;
import net.rim.ejde.internal.model.IModelConstants;
import net.rim.ejde.internal.util.FileUtils;
import net.rim.ide.Project;
import net.rim.ide.Workspace;
import net.rim.ide.core.IDEError;

import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;

public final class Util implements IModelConstants.IArtifacts {
    static private final Logger log = Logger.getLogger(Util.class);

    private Util() {
    }

    static public Workspace getDefaultLegacyWorkspace() {
        Workspace workspace = null;

        File file = ILegacy.Workspace.getMetaFile();

        try {
            if (!file.exists()) {
                file.getParentFile().mkdirs();
                file.createNewFile();
            }

            workspace = new Workspace(file);

            save(workspace, true);
        } catch (Throwable t) {
            log.error(t.getMessage(), t);
        }

        return workspace;
    }

    static public IStatus save(Workspace workspace, boolean prompt) {
        if (workspace == null) {
            log.error("Workspace could not be saved. NULL workspace.");
            return new Status(IStatus.ERROR, ContextManager.PLUGIN_ID, 1, "", null);
        }
        if (!workspace.getDirty()) {
            log.warn("Tried to save an unchanged workspace");
            return Status.OK_STATUS;
        }

        File jdwFile = workspace.getFile();

        if (jdwFile == null || !jdwFile.exists()) {
            log.error("Workspace could not be saved. JDW file does not exist or is null");
            return new Status(IStatus.ERROR, ContextManager.PLUGIN_ID, 1, "", null);
        }

        boolean canChange = jdwFile.canWrite();

        if (!canChange && prompt) {

            IStatus lStatus = FileUtils.canChange(jdwFile);
            if (lStatus.isOK()) {
                try {
                    workspace.save();
                } catch (IDEError e) {
                    log.error("Workspace could not be saved.", e);
                    return new Status(IStatus.ERROR, ContextManager.PLUGIN_ID, 1, "", e);
                }
            } else {
                log.error("Workspace could not be saved. User disallowed operation.");
                return new Status(IStatus.ERROR, ContextManager.PLUGIN_ID, 1, "", null);
            }
        } else {
            try {
                workspace.save();
            } catch (IDEError e) {
                log.error("Workspace could not be saved.", e);
                return new Status(IStatus.ERROR, ContextManager.PLUGIN_ID, 1, "", e);
            }
        }

        return Status.OK_STATUS;
    }

    static public List<String> getSources(Project proj) {
        List<String> sources = new ArrayList<String>();
        String udata = proj.getUserData();

        StringTokenizer st = new StringTokenizer(udata, "|");
        String token;

        while (st.hasMoreElements()) {
            token = st.nextToken();
            if (StringUtils.isNotBlank(token)) {
                sources.add(token);
            }
        }

        return sources;
    }

    public Project getLegacyProject(Workspace legacyWorkspace, BlackBerryProject iproject) {
        return getLegacyProject(legacyWorkspace, iproject.getProject());
    }

    public Project getLegacyProject(Workspace legacyWorkspace, IProject eclipseProject) {
        return getLegacyProject(legacyWorkspace, eclipseProject.getName());
    }

    public Project getLegacyProject(Workspace legacyWorkspace, String eclipseProjectName) {
        if (null == legacyWorkspace) {
            return null;
        }

        if (StringUtils.isBlank(eclipseProjectName)) {
            return null;
        }

        int count = legacyWorkspace.getNumProjects();

        Project project = null;

        for (int i = 0; i < count; i++) {
            project = legacyWorkspace.getProject(i);

            if (null != project && eclipseProjectName.equals(project.getDisplayName())) {
                return project;
            }
        }

        return null;
    }

    public static void addProjectToWorkspaceNonDup(Workspace wksp, Project proj) {
        int np = wksp.getNumProjects();
        Project oldproj;
        File pfile = proj.getFile();
        boolean isact;

        for (int i = 0; i < np; i++) {
            oldproj = wksp.getProject(i);

            if (oldproj.getFile().equals(pfile)) {
                if (proj != oldproj) {
                    isact = wksp.isActiveProject(oldproj);
                    wksp.removeProject(oldproj);

                    try {
                        wksp.addProject(proj);
                    } catch (IDEError e) {
                        log.error(e.getMessage(), e);
                        return;
                    }

                    if (isact)
                        wksp.setActiveProject(proj, "Release");

                    return;
                }

                return;
            }
        }

        try {
            wksp.addProject(proj);
        } catch (IDEError e) {
            log.error(e.getMessage(), e);
        }
    }
}