Package com.tek42.perforce.model

Examples of com.tek42.perforce.model.Workspace


            if (qName.equalsIgnoreCase("changelog")) {
                //this is the root, so don't do anything
                return;
            }
            if (objects.peek() instanceof Changelist) {
                Changelist changelist = (Changelist) objects.peek();
                if (qName.equalsIgnoreCase("changenumber")) {
                    changelist.setChangeNumber(new Integer(text.toString()));
                    return;
                }
                if (qName.equalsIgnoreCase("date")) {
                    changelist.setDate(stringDateToJavaDate(text.toString()));
                    return;
                }
                if (qName.equalsIgnoreCase("description")) {
                    changelist.setDescription(text.toString());
                    return;
                }
                if (qName.equalsIgnoreCase("user")) {
                    changelist.setUser(text.toString());
                    return;
                }
                if (qName.equalsIgnoreCase("workspace")) {
                    changelist.setWorkspace(text.toString());
                    return;
                }
            }
            if (objects.peek() instanceof Changelist.JobEntry) {
                Changelist.JobEntry job = (Changelist.JobEntry) objects.peek();
                if (qName.equalsIgnoreCase("name")) {
                    job.setJob(text.toString());
                    return;
                }
                if (qName.equalsIgnoreCase("description")) {
                    job.setDescription(text.toString());
                    return;
                }
                if (qName.equalsIgnoreCase("status")) {
                    job.setStatus(text.toString());
                    return;
                }
                if (qName.equalsIgnoreCase("job")) {
                    objects.pop();
                    List joblist = (List) objects.peek();
                    joblist.add(job);
                    return;
                }
            }
            if (objects.peek() instanceof Changelist.FileEntry) {
                Changelist.FileEntry file = (Changelist.FileEntry) objects.peek();
                if (qName.equalsIgnoreCase("name")) {
                    file.setFilename(text.toString());
                    return;
                }
                if (qName.equalsIgnoreCase("workspacePath")) {
                    file.setWorkspacePath(text.toString());
                    return;
                }
                if (qName.equalsIgnoreCase("action")) {
                    file.setAction(Changelist.FileEntry.Action.valueOf(text.toString()));
                    return;
                }
                if (qName.equalsIgnoreCase("rev")) {
                    file.setRevision(text.toString());
                    return;
                }
                if (qName.equalsIgnoreCase("changenumber")) {
                    file.setChangenumber(text.toString());
                    return;
                }
                if (qName.equalsIgnoreCase("file")) {
                    objects.pop();
                    List filelist = (List) objects.peek();
                    filelist.add(file);
                    return;
                }
            }
            if (qName.equalsIgnoreCase("files")) {
                ArrayList<Changelist.FileEntry> files = (ArrayList<Changelist.FileEntry>) objects.pop();
                Changelist changelist = (Changelist) objects.peek();
                changelist.setFiles(files);
                return;
            }
            if (qName.equalsIgnoreCase("jobs")) {
                ArrayList<Changelist.JobEntry> jobs = (ArrayList<Changelist.JobEntry>) objects.pop();
                Changelist changelist = (Changelist) objects.peek();
                changelist.setJobs(jobs);
                return;
            }
            if (qName.equalsIgnoreCase("entry")) {
                Changelist changelist = (Changelist) objects.pop();
                PerforceChangeLogEntry entry = new PerforceChangeLogEntry(changeLogSet);
                entry.setChange(changelist);
                changeLogEntries.add(entry);
                return;
            }
View Full Code Here


            if (qName.equalsIgnoreCase("changelog")) {
                //this is the root, so don't do anything
                return;
            }
            if (qName.equalsIgnoreCase("entry")) {
                objects.push(new Changelist());
                return;
            }
            if (objects.peek() instanceof Changelist) {
                if (qName.equalsIgnoreCase("files")) {
                    objects.push(new ArrayList<Changelist.FileEntry>());
View Full Code Here

                    && lastChange > 0 && newestChange > lastChange) {
                List<Integer> workspaceChanges = depot.getChanges().getChangeNumbersInRange(
                        p4workspace, lastChange+1, newestChange, viewMask, showIntegChanges);
                for (int i = workspaceChanges.size()-1; i >= 0; --i) {
                    int changeNumber = workspaceChanges.get(i);
                    Changelist changelist = depot.getChanges().getChangelist(changeNumber, fileLimit);
                    if (!isChangelistExcluded(changelist, build.getProject(), build.getBuiltOn(), p4workspace.getViewsAsString(), log)) {
                        newestChange = changeNumber;
                        break;
                    }
                    log.println("Changelist "+changeNumber+" is composed of file(s) and/or user(s) that are excluded.");
View Full Code Here

                }
            }
            depot.setExecutable(exe);

            try {
                Counter counter = depot.getCounters().getCounter("change");
                if (counter != null)
                    return depot;
            } catch (PerforceException e) {
            }
View Full Code Here

            Depot depot = getDepotFromRequest(req);
            if (depot != null) {
                try {
                    Counters counters = depot.getCounters();
                    Counter p4Counter = counters.getCounter(counter);
                    // try setting the counter back to the same value to verify permissions
                    counters.saveCounter(p4Counter);
                } catch (PerforceException e) {
                    return FormValidation.error(
                            "Error accessing perforce while checking counter: " + e.getLocalizedMessage());
View Full Code Here

   * @see com.tek42.perforce.parse.Builder#build(java.lang.StringBuilder)
   */
  public Counter build(StringBuilder sb) throws PerforceException {
    final Pattern p = Pattern.compile("^([0-9]+)", Pattern.DOTALL | Pattern.MULTILINE);
    final Matcher m = p.matcher(sb.toString());
    final Counter counter = new Counter();
    counter.setName("");
    if(m.find()) {
                    counter.setValue(Integer.parseInt(m.group(0).trim()));
    } else {
                    throw new PerforceException("Could not get value of counter.\nResponse from perforce was:\n" + sb);
                }
    return counter;
  }
View Full Code Here

   * @return a counter specified by name
   * @throws PerforceException
   */
  public Counter getCounter(String name) throws PerforceException {
    final CounterBuilder builder = new CounterBuilder();
    final Counter counter = builder.build(getPerforceResponse(builder.getBuildCmd(getP4Exe(), name)));
    counter.setName(name);
    return counter;
  }
View Full Code Here

                } else
                if (p4Counter != null && !updateCounterValue) {
                    //use a counter
                    String counterName;
                    counterName = MacroStringHelper.substituteParameters(this.p4Counter, this, build, null);
                    Counter counter = depot.getCounters().getCounter(counterName);
                    newestChange = counter.getValue();
                } else {
                    //use the latest submitted change from workspace, or depot
                    try {
                        List<Integer> workspaceChanges = depot.getChanges().getChangeNumbers(p4WorkspacePath, 0, 1);
                        if (workspaceChanges != null && workspaceChanges.size() > 0) {
                            newestChange = workspaceChanges.get(0);
                        } else {
                            List<Integer> depotChanges = depot.getChanges().getChangeNumbers("//...", 0, 1);
                            if (depotChanges != null && depotChanges.size() > 0) {
                                newestChange = depotChanges.get(0);
                            }
                        }
                    } catch (PerforceException e) {
                        //fall back onto 'change' counter value
                        log.println("Failed to get last submitted changeset in the view, falling back to change counter. Error was: " + e.getMessage());
                        Counter counter = depot.getCounters().getCounter("change");
                        newestChange = counter.getValue();
                    }
                }
            }

            // Set newestChange down to the next available changeset if we're building one change at a time
            if (oneChangelistOnly && build.getPreviousBuild() != null
                    && lastChange > 0 && newestChange > lastChange) {
                List<Integer> workspaceChanges = depot.getChanges().getChangeNumbersInRange(
                        p4workspace, lastChange+1, newestChange, viewMask, showIntegChanges);
                for (int i = workspaceChanges.size()-1; i >= 0; --i) {
                    int changeNumber = workspaceChanges.get(i);
                    Changelist changelist = depot.getChanges().getChangelist(changeNumber, fileLimit);
                    if (!isChangelistExcluded(changelist, build.getProject(), build.getBuiltOn(), p4workspace.getViewsAsString(), log)) {
                        newestChange = changeNumber;
                        break;
                    }
                    log.println("Changelist "+changeNumber+" is composed of file(s) and/or user(s) that are excluded.");
                }
                log.println("Remaining changes: " + workspaceChanges);
                log.println("Building next changeset in sequence: " + newestChange);
            }
           
            if (build instanceof MatrixRun) {
                newestChange = getOrSetMatrixChangeSet(build, depot, newestChange, effectiveProjectPath, log);
            }
           
            if (lastChange <= 0) {
                lastChange = newestChange - MAX_CHANGESETS_ON_FIRST_BUILD;
                if (lastChange < 0) {
                    lastChange = 0;
                }
            }
           
            // Get ChangeLog
            if (!disableChangeLogOnly) {
                int lastChangeToDisplay = lastChange+1;
                if (lastChange > newestChange) {
                    // If we're building an older change, display it anyway
                    // TODO: This can be considered inconsistent behavior
                    lastChangeToDisplay = newestChange;
                }
                   
                List<Integer> changeNumbersTo;
                if (useViewMaskForChangeLog && useViewMask) {
                    changeNumbersTo = depot.getChanges().getChangeNumbersInRange(p4workspace, lastChangeToDisplay, newestChange, viewMask, showIntegChanges);
                } else {
                    changeNumbersTo = depot.getChanges().getChangeNumbersInRange(p4workspace, lastChangeToDisplay, newestChange, showIntegChanges);
                }
                changes = depot.getChanges().getChangelistsFromNumbers(changeNumbersTo, fileLimit);

                if (changes.size() > 0) {
                    // Save the changes we discovered.
                    PerforceChangeLogSet.saveToChangeLog(
                            new FileOutputStream(changelogFile), changes);
                    newestChange = changes.get(0).getChangeNumber();
                    // Get and store information about committers
                    retrieveUserInformation(depot, changes);
                } else {
                    // No new changes discovered (though the definition of the workspace or label may have changed).
                    createEmptyChangeLog(changelogFile, listener, "changelog");
                }
            }

            // Sync workspace
            if (!disableSyncOnly) {
                // Now we can actually do the sync process...
                StringBuilder sbMessage = new StringBuilder("Sync'ing workspace to ");
                StringBuilder sbSyncPath = new StringBuilder(p4WorkspacePath);
                StringBuilder sbSyncPathSuffix = new StringBuilder();
                sbSyncPathSuffix.append("@");

                if (p4Label != null && !p4Label.trim().isEmpty()) {
                    sbMessage.append("label ");
                    sbMessage.append(p4Label);
                    sbSyncPathSuffix.append(p4Label);
                } else {
                    sbMessage.append("changelist ");
                    sbMessage.append(newestChange);
                    sbSyncPathSuffix.append(newestChange);
                }

                sbSyncPath.append(sbSyncPathSuffix);

                if (forceSync || alwaysForceSync)
                    sbMessage.append(" (forcing sync of unchanged files).");
                else
                    sbMessage.append(".");

                log.println(sbMessage.toString());
                String syncPath = sbSyncPath.toString();

                long startTime = System.currentTimeMillis();

                if (useViewMaskForSyncing && useViewMask) {
                    for (String path : viewMask.replaceAll("\r", "").split("\n")) {
                        StringBuilder sbMaskPath = new StringBuilder(path);
                        sbMaskPath.append(sbSyncPathSuffix);
                        String maskPath = sbMaskPath.toString();
                        depot.getWorkspaces().syncTo(maskPath, forceSync || alwaysForceSync, dontUpdateServer);
                    }
                } else {
                    depot.getWorkspaces().syncTo(syncPath, forceSync || alwaysForceSync, dontUpdateServer);
                }
                long endTime = System.currentTimeMillis();
                long duration = endTime - startTime;

                log.println("Sync complete, took " + duration + " ms");
            }

            boolean doSaveProject = false;
            // reset one time use variables...
            if (this.forceSync == true || this.firstChange != -1) {
                this.forceSync = false;
                this.firstChange = -1;
                // save the one-time use variables...
                doSaveProject = true;
            }
            // If we aren't managing the client views, update the current ones
            // with those from perforce, and save them if they have changed.
            if (!this.updateView && !effectiveProjectPath.equals(this.projectPath)) {
                this.projectPath = effectiveProjectPath;
                doSaveProject = true;
            }
            if (doSaveProject) {
                build.getParent().save();
            }

            // Add tagging action that enables the user to create a label
            // for this build.
            build.addAction(new PerforceTagAction(
                build, depot, newestChange, effectiveProjectPath, MacroStringHelper.substituteParameters(p4User, this, build, null)));

            build.addAction(new PerforceSCMRevisionState(newestChange));

            if (p4Counter != null && updateCounterValue) {
                // Set or create a counter to mark this change
                Counter counter = new Counter();
                String counterName = MacroStringHelper.substituteParameters(this.p4Counter, this, build, null);
                counter.setName(counterName);
                counter.setValue(newestChange);
                log.println("Updating counter " + counterName + " to " + newestChange);
                depot.getCounters().saveCounter(counter);
            }

            // remember the p4Ticket if we were issued one
View Full Code Here

        if (p4Counter != null && !updateCounterValue) {

            // If this is a downstream build that triggers by polling the set counter
            // use the counter as the value for the newest change instead of the workspace view

            Counter counter = depot.getCounters().getCounter(p4Counter);
            highestSelectedChangeNumber = counter.getValue();
            logger.println("Latest submitted change selected by named counter is " + highestSelectedChangeNumber);
            String root = "//" + p4workspace.getName() + "/...";
            changeNumbers = depot.getChanges().getChangeNumbersInRange(p4workspace, lastChangeNumber+1, highestSelectedChangeNumber, root, false);
        } else {
            // General Case

            // Has any new change been submitted since then (that is selected
            // by this workspace).

            Integer newestChange;
            String effectiveP4Label = MacroStringHelper.substituteParameters(
                    this.p4Label, this, project, node, null);
            if (effectiveP4Label != null && !effectiveP4Label.trim().isEmpty()) {
                //In case where we are using a rolling label.
                String root = "//" + p4workspace.getName() + "/...";
                newestChange = depot.getChanges().getHighestLabelChangeNumber(p4workspace, effectiveP4Label.trim(), root);
            } else {
                Counter counter = depot.getCounters().getCounter("change");
                newestChange = counter.getValue();
            }

            if (useViewMaskForPolling && useViewMask) {
                changeNumbers = depot.getChanges().getChangeNumbersInRange(p4workspace, lastChangeNumber+1, newestChange,
                        MacroStringHelper.substituteParameters(viewMask, this, project, node, null), false);
View Full Code Here

* @author Mike
*         Date: Jul 21, 2008 2:44:07 PM
*/
public class GroupBuilder extends AbstractFormBuilder<Group> {
  public Group buildForm(Map<String, String> fields) throws PerforceException {
    Group group = new Group();
    group.setName(getField("Group", fields));
    group.setMaxLockTime(getField("MaxLockTime", fields));
    group.setMaxResults(getField("MaxResults", fields));
    group.setMaxScanRows(getField("MaxScanRows", fields));

    String value = getField("Timeout", fields);
    if(value.equals(""))
      value = "0";

    group.setTimeout(Long.parseLong(value));
    group.setUsers(getFieldAsList("Users", fields));
    group.setSubgroups(getFieldAsList("Subgroups", fields));
    group.setOwners(getFieldAsList("Owners", fields));

    return group;
  }
View Full Code Here

TOP

Related Classes of com.tek42.perforce.model.Workspace

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.