Package com.tek42.perforce.model

Examples of com.tek42.perforce.model.Workspace


  }

        public StringBuilder flushTo(String path) throws PerforceException {
            StringBuilder response = getPerforceResponse(new String[] { getP4Exe(), "sync", "-k", path });
            if(hitMax(response)){
                throw new PerforceException("Hit perforce server limit while flushing client: " + response);
            }
            return response;
        }
View Full Code Here


  public Changelist getChangelist(int number, int maxFiles) throws PerforceException {

    ChangelistBuilder builder = new ChangelistBuilder(maxFiles);
    Changelist change = builder.build(getPerforceResponse(builder.getBuildCmd(getP4Exe(), Integer.toString(number))));
    if(change == null)
      throw new PerforceException("Failed to retrieve changelist " + number);
                calculateWorkspacePaths(change);
    return change;
  }
View Full Code Here

    List<Changelist> changes = new ArrayList<Changelist>();
    for(String id : ids) {
                    try{
      changes.add(getChangelist(new Integer(id), maxFiles));
                    } catch(Exception e){
                        throw new PerforceException("Could not retrieve changelists.\nResponse from perforce was:\n" + response, e);
                    }
    }
    return changes;
  }
View Full Code Here

    else
      cmd = new String[] { getP4Exe(), "changes", "-s", "submitted", path };

    StringBuilder response = getPerforceResponse(cmd);
                if(hitMax(response)){
                    throw new PerforceException("Hit perforce server limit while pulling changes: " + response);
                }
    List<String> ids = parseList(response, 1);
    List<Integer> numbers = new ArrayList<Integer>(ids.size());
    for(String id : ids) {
                    try{
      numbers.add(new Integer(id));
                    } catch (Exception e) {
                        throw new PerforceException("Failed to get change numbers.\nResponse from perforce was:\n" + response, e);
                    }
    }
    return numbers;
  }
View Full Code Here

        for (String user : users) {
            com.tek42.perforce.model.User pu;
            try {
                 pu = depot.getUsers().getUser(user);
            } catch (Exception e) {
                throw new PerforceException("Problem getting user information for " + user,e);
            }
            //If there is no such user in perforce, then ignore and keep going.
            if (pu == null) {
                LOGGER.warning("Perforce User ("+user+") does not exist.");
                continue;
View Full Code Here

        } catch(IOException e) {
            //try to close all the pipes before throwing an exception
            closeBuffers();

            throw new PerforceException("Could not run perforce command.", e);
        }
    }
View Full Code Here

                return FormValidation.ok();
            }
            if (depot != null) {
                try {
                    int number = Integer.parseInt(change);
                    Changelist changelist = depot.getChanges().getChangelist(number, -1);
                    if (changelist.getChangeNumber() != number)
                        throw new PerforceException("broken");
                } catch (Exception e) {
                    return FormValidation.error("Changelist: " + change + " does not exist.");
                }
            }
View Full Code Here

   * (non-Javadoc)
   *
   * @see com.tek42.perforce.parse.Builder#build(java.lang.StringBuilder)
   */
  public Changelist build(StringBuilder sb) throws PerforceException {
    Changelist change = null;
    StringTokenizer lines = new StringTokenizer(sb.toString(), "\n\r");
    try {
      while(lines.hasMoreElements()) {
        String line = lines.nextToken();
        logger.debug("Line: " + line);

        if(line.startsWith("Change")) {
          logger.debug("New changelist.");

          change = new Changelist();
          // Line looks like:
          // Change XXXX by user@client on YYYY/MM/DD HH:MM:SS
          StringTokenizer details = new StringTokenizer(line);
          details.nextToken(); // client
          change.setChangeNumber(new Integer(details.nextToken()));
          details.nextToken(); // by
          String user = details.nextToken();
          change.setUser(user.substring(0, user.indexOf("@")));
          change.setWorkspace(user.substring(user.indexOf("@") + 1));
          details.nextToken(); // on

          String date = details.nextToken();
          String time = details.nextToken();

          change.setDate(parseDate(date + " " + time));

          // the lines immediately following is the description
          StringBuilder desc = new StringBuilder();
          line = lines.nextToken();
          while(line != null && !line.startsWith("Affected files") && !line.startsWith("Jobs fixed")) {
            logger.debug("Description Line: " + line.trim());
            desc.append(line + "\n");
            line = lines.nextToken();
          }
          change.setDescription(desc.toString().trim());

        }

        if(line.startsWith("Jobs fixed")) {
          logger.debug("Has jobs.");
          List<Changelist.JobEntry> jobs = new ArrayList<Changelist.JobEntry>();
          boolean getDesc = false;
          Changelist.JobEntry job = new Changelist.JobEntry();
          String description = null;
          line = lines.nextToken();
          while(!line.startsWith("Affected files")) {
            logger.debug("Job Line: " + line);
            if(!getDesc) {
              // Line looks like:
              // EXT-84 on 2007/09/25 by mwille *closed*
              // or
              // EXT-84 on 2007/09/25 *closed*
              // or
              // EXT-84 on 2007/09/25
                            // or
                            // EXT-84 on 2007/09/25 by mwille
              StringTokenizer details = new StringTokenizer(line);
              job = new Changelist.JobEntry();
              if (details.hasMoreTokens())
                job.setJob(details.nextToken());
              else
                logger.error("We shouldnt be here.  Should be getting job but no nextToken: " + line);
             
              if (details.hasMoreTokens())
                details.nextToken(); // on
              else
                logger.error("We shouldnt be here.  Should be popping off on but no nextToken: " + line);
             
              if (details.hasMoreTokens())
                details.nextToken(); // date
              else
                logger.error("We shouldnt be here.  Should be popping off date but no nextToken: " + line);
             
              String status = "";

              if (details.hasMoreTokens())
              {
                String possibleUser = details.nextToken(); // by
                if ("by".equals(possibleUser))
                {
                  if (details.hasMoreTokens())
                    details.nextToken(); // user
                  else
                    logger.error("We shouldnt be here.  Should be popping off user since found by but no nextToken: " + line);
                                                                        if (details.hasMoreTokens()) //status is optional
                    status = details.nextToken(); // status
                }
                else
                {
                  status = possibleUser;
                }
              }

              job.setStatus(status);
              getDesc = true;
              line = lines.nextToken();
            } else //getDesc
              //What comes back from p4 describe -s is actually the title not description and should only be one line
              //leave handling of multiple lines because who knows what the future will bring
              //It is possible to not have a description/title
              //The title will start with a tab where Affected files or another job will not.
              //Also possible to have blank lines
              description = "";             
              while(line.startsWith("\t") || line.length() == 0) {
                description += line;
                if(!lines.hasMoreElements()) {
                  logger.error("We shouldnt be here.  We are not out of getting the description for the job but no more lines");
                  break;
                }
                description += "\n";
                line = lines.nextToken();
              }
              job.setDescription(description.trim());
              jobs.add(job);
              getDesc = false;
            }

          }  //while lines

          change.setJobs(jobs);

        }

        if(line.startsWith("Affected files")) {
          logger.debug("reading files...");
          List<Changelist.FileEntry> files = new ArrayList<Changelist.FileEntry>();
              int fileCount = 0;

          while(lines.hasMoreElements()) {
              //Record a maximum of maxFiles files
              if(maxFiles > 0) {
                          if(fileCount >= maxFiles) {
                              break;
                          }
                  fileCount++;
              }
            String entry = lines.nextToken();
            logger.debug("File Line: " + entry);
            // if(!entry.startsWith("..."))
            // break;
            // line looks lie:
            // ... //depot/path/to/file/file.ext#1 edit

            int revStart = entry.indexOf("#");
            if(revStart < 0)
              continue;
            String filename = entry.substring(4, revStart);
            String rev = entry.substring(revStart + 1, entry.indexOf(" ", revStart));
            String action = entry.substring(entry.indexOf(" ", revStart) + 1);
            action = action.replace('/', '_');
            Changelist.FileEntry file = new Changelist.FileEntry();
            file.setFilename(filename);
            file.setRevision(rev);
                                                file.setChangenumber(Integer.valueOf(change.getChangeNumber()).toString());
            file.setAction(Changelist.FileEntry.Action.valueOf(action.toUpperCase(Locale.US)));
            files.add(file);
          }

          change.setFiles(files);

        }
      }
    } catch(Exception e) {
      logger.error("Exception: " + e.getMessage());
View Full Code Here

   * @throws PerforceException
   */
  public Changelist getChangelist(int number, int maxFiles) throws PerforceException {

    ChangelistBuilder builder = new ChangelistBuilder(maxFiles);
    Changelist change = builder.build(getPerforceResponse(builder.getBuildCmd(getP4Exe(), Integer.toString(number))));
    if(change == null)
      throw new PerforceException("Failed to retrieve changelist " + number);
                calculateWorkspacePaths(change);
    return change;
  }
View Full Code Here

        List<PerforceChangeLogEntry> entries = new ArrayList<PerforceChangeLogEntry>();
        PerforceChangeLogSet originalSet = new PerforceChangeLogSet(null,entries);
       
       
        List<Changelist> changes = new ArrayList<Changelist>();
        Changelist cl = new Changelist();
        cl.setChangeNumber(1000);
        cl.setDescription("test change <this is broken XML&>");
        cl.setUser("test.user");
        cl.setWorkspace("test_workspace");
        List<Changelist.FileEntry> files = new ArrayList<Changelist.FileEntry>();
        Changelist.FileEntry fileEntry = new Changelist.FileEntry();
        fileEntry.setAction(Changelist.FileEntry.Action.ADD);
        fileEntry.setChangenumber("1000");
        fileEntry.setRevision("1");
        fileEntry.setWorkspacePath("some/workspace/path");
        fileEntry.setFilename("file");
        files.add(fileEntry);
        fileEntry = new Changelist.FileEntry();
        fileEntry.setAction(Changelist.FileEntry.Action.ADD);
        fileEntry.setChangenumber("1001");
        fileEntry.setRevision("3");
        fileEntry.setWorkspacePath("some/workspace/path2");
        fileEntry.setFilename("file2");
        files.add(fileEntry);
        cl.setFiles(files);
        List<Changelist.JobEntry> jobs = new ArrayList<Changelist.JobEntry>();
        Changelist.JobEntry jobEntry = new Changelist.JobEntry();
        jobEntry.setDescription("test job");
        jobEntry.setJob("test-job");
        jobEntry.setStatus("submitted");
        jobs.add(jobEntry);
        jobEntry = new Changelist.JobEntry();
        jobEntry.setDescription("test job2 <!--Contains some nonsense-->\n<[[ like, really broken ]]>\n");
        jobEntry.setJob("test-job2");
        jobEntry.setStatus("rejected");
        jobs.add(jobEntry);
        cl.setJobs(jobs);
        changes.add(cl);
        PerforceChangeLogEntry entry = new PerforceChangeLogEntry(originalSet);
        entry.setChange(cl);
        entries.add(entry);

        cl = new Changelist();
        cl.setChangeNumber(1003);
        cl.setDescription("test change2");
        cl.setUser("test.user2");
        cl.setWorkspace("test_workspace2");
        files = new ArrayList<Changelist.FileEntry>();
        fileEntry = new Changelist.FileEntry();
        fileEntry.setAction(Changelist.FileEntry.Action.ADD);
        fileEntry.setChangenumber("1003");
        fileEntry.setRevision("1");
        fileEntry.setWorkspacePath("some/workspace/path5");
        fileEntry.setFilename("file5");
        files.add(fileEntry);
        fileEntry = new Changelist.FileEntry();
        fileEntry.setAction(Changelist.FileEntry.Action.ADD);
        fileEntry.setChangenumber("1003");
        fileEntry.setRevision("3");
        fileEntry.setWorkspacePath("some/workspace/path3");
        fileEntry.setFilename("file3");
        files.add(fileEntry);
        cl.setFiles(files);
        jobs = new ArrayList<Changelist.JobEntry>();
        jobEntry = new Changelist.JobEntry();
        jobEntry.setDescription("test job3");
        jobEntry.setJob("test-job3");
        jobEntry.setStatus("submitted");
        jobs.add(jobEntry);
        jobEntry = new Changelist.JobEntry();
        jobEntry.setDescription("test job4");
        jobEntry.setJob("test-job4");
        jobEntry.setStatus("rejected");
        jobs.add(jobEntry);
        cl.setJobs(jobs);
        changes.add(cl);
        entry = new PerforceChangeLogEntry(originalSet);
        entry.setChange(cl);
        entries.add(entry);
       
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.