Package com.projity.pm.resource

Examples of com.projity.pm.resource.Resource


      else if (impl instanceof Assignment)
        taskInformationDialog.showResources();

      taskInformationDialog.setVisible(true);
    } else if (impl instanceof Resource||(impl instanceof Assignment&&resourceType)) {
      Resource resource=(Resource)((impl instanceof Assignment)?(((Assignment)impl).getResource()):impl);;
      if (resourceInformationDialog == null) {
        resourceInformationDialog = ResourceInformationDialog.getInstance(getFrame(),resource);
        resourceInformationDialog.pack();
        resourceInformationDialog.setModal(false);
      } else {
View Full Code Here


*/
  public void usePropertiesOf(Assignment from) {
    boolean compatibleTypes = isLabor() == from.isLabor();
    double units = getUnits();
    Rate r = getRate();
    Resource resource = getResource();
    detail = (AssignmentDetail) from.detail.clone();
      detail.replaceResourceAndUnits(units,resource);

    if (!compatibleTypes) // don't want to set units if not compatible
      detail.setRate(r);
View Full Code Here

  public WorkCalendar getEffectiveWorkCalendar() {
    if (actualExceptionsCalendar != null)
      return actualExceptionsCalendar;
    if (baselineCalendar != null)
      return baselineCalendar;
    Resource resource = getResource();
    Task task = getTask();
    if (((NormalTask)task).isIgnoreResourceCalendar() || isInvalidIntersectionCalendar() || resource.getEffectiveWorkCalendar() == null)
      return task.getEffectiveWorkCalendar();
    // if no task calendar, or calendar is invalid due to empty intersection of task and resource calendars
    if (task.getWorkCalendar() == null)
      return resource.getEffectiveWorkCalendar();
   
    if (intersectionCalendar == null) {
      try {
        intersectionCalendar = ((WorkingCalendar)task.getEffectiveWorkCalendar()).intersectWith((WorkingCalendar)resource.getEffectiveWorkCalendar());
      } catch (InvalidCalendarIntersectionException e) {
        intersectionCalendar = WorkingCalendar.INVALID_INTERSECTION_CALENDAR;
        Alert.error(Messages.getString("Message.invalidIntersection"));
        return task.getEffectiveWorkCalendar();
      }
View Full Code Here

        throw new ParseException(getErrorMessage(string), pos.getIndex());
      }
    }
   
    double percent = 1.0D;
    Resource resource = (Resource)(parameters.isLeftAssociation() ? found : parameters.getThisObject());
    Rate rate = null;
    if (matcher.group(2) != null) { // if text was empty use default
      if (!getParameters().isAllowDetailsEntry())
        throw new ParseException(Messages.getString("Message.cannotEnterUnits"),0);
      RateFormat format = resource.getRateFormat();
      rate = (Rate) format.parseObject(matcher.group(2));
      percent = rate.getValue();
//      Number percentNumber;
//      if (resource.isLabor())
//        percentNumber = percentFormat.parse(matcher.group(2)+ Settings.PERCENT); // force a percent sign at the end for labor.  If there are two, it is ignored
//      else //TODO allow parsing values like 3/d for material resources
//        percentNumber = NumberFormat.getInstance().parse(matcher.group(2));
//     
//      if (percentNumber == null)
//        throw new ParseException(getErrorMessage(string), pos.getIndex());
//      percent = percentNumber.doubleValue();
    } else if (resource.isMaterial()) {
      rate = new Rate(1,TimeUnit.NON_TEMPORAL);
    }
    Assignment ass = Assignment.getInstance((Task) (parameters.isLeftAssociation() ? parameters.getThisObject() : found),
                    resource,
                      percent,
View Full Code Here

        task.setEffortDriven(false);
      }

      Iterator r = resources.iterator();
      while (r.hasNext()) {
        Resource resource = (Resource) r.next();
        if (null == task.findAssignment(resource)) {
//          double units = 1.0D;
//TODO Bug 330: this is slow and uses tons of memory when assigning many at once. optimizing by doing just one update
//The result is that AssignmentNodeModel.objectChanged(ObjectEvent objectEvent) is called for each assignment
//This needs to be batched as its current memory usage is unacceptable and it takes very long
//Perhaps one solution would be to replace hierarchy search() with a hash table for mapping impls to nodes

//TODO It throws an event for assignment. A service for updating all the assignments at once should be added.
          Assignment assignment = newAssignment(task,resource,units,0,eventSource,true);
          if (!resource.isLabor()) // for assigning non temporal resources, use the value of 1
            assignment.setRateUnit(TimeUnit.NON_TEMPORAL);
        }
      }
      if (taskHasNoAssignments) {// if adding for first time, put back effort driven value
        task.setSchedulingType(oldSchedulingType);
View Full Code Here

    }
  }

  public void remove(Assignment assignment, boolean cleanTaskLink, Object eventSource, NodeUndoInfo undo) {
      NormalTask task=(NormalTask)assignment.getTask();
      Resource resource=assignment.getResource();
                 
      if (task.findAssignment(resource) == null)
        return; // avoids endless loop 9/1/06 hk

     
      if (cleanTaskLink) task.removeAssignment(assignment);
      resource.removeAssignment(assignment);
     
//    //remove assignment snapshots too 18/7/2006 lc
//    //if (resource!=ResourceImpl.getUnassignedInstance())
//        for (int s=0;s<Settings.numBaselines();s++){
//            TaskSnapshot snapshot=(TaskSnapshot)task.getSnapshot(new Integer(s));
View Full Code Here

/**
* Removes given the current task selection for the given resource lsit
* @param resourceList
*/  void remove(List resourceList) {
    Resource resource;
    Iterator r = getSelectedResources().iterator();
    while (r.hasNext()) {
      remove((Resource)r.next());
    }
    spreadSheetPane.updateTable();
View Full Code Here

      Alert.warn(Messages.getString("Message.onlyReplaceOneResourceAtATime"),this); //$NON-NLS-1$
      return;
    } else if (list.size() == 0) {
      return;
    }
    Resource resource = (Resource)list.get(0);
    List replacementList = ReplaceAssignmentDialog.getReplacementFromDialog(documentFrame,resource);
    if (replacementList == null || replacementList.isEmpty()) // cancelled or nothing chosen
      return;
    if (!replacementList.contains(resource)) // if resource was replaced, remove it
      remove(resource);
View Full Code Here

      if (resources!=null)
        for (Iterator i=resources.iterator();i.hasNext();){
          ResourceData resourceData=(ResourceData)i.next();
          ResourceImpl resource=deserializeResourceAndAddToPool(resourceData,resourcePool,reindex,enterpriseResources);
          Resource origImpl =  _localResourceMap.get(resourceData.getUniqueId());
          //old code below
          //resourceNodeMap.put(resourceData.getEnterpriseResource(),NodeFactory.getInstance().createNode(resource));
          //replaced with change for DEF165936
          resourceNodeMap.put(resourceData.getEnterpriseResource(),NodeFactory.getInstance().createNode(origImpl));
        }
      project.setResourcePool(resourcePool);

      //resource outline
      /* version with outline on project resource
       * if (resources!=null){
            for (Iterator i=resources.iterator();i.hasNext();){
                ResourceData resourceData=(ResourceData)i.next();
                ResourceData parentData=(ResourceData)resourceData.getParentResource();
                Node node=(Node)resourceNodeMap.get(resourceData.getEnterpriseResource());
                Node parentNode=(parentData==null)?
                    null:
                    ((Node)resourceNodeMap.get(parentData.getEnterpriseResource()));
                project.getResourcePool().addToDefaultOutline(parentNode,node,(int)resourceData.getChildPosition());
            }
        }*/
      if (resources!=null){

        for (Iterator i=resources.iterator();i.hasNext();){
          ResourceData resourceData=(ResourceData)i.next();
          EnterpriseResourceData enterpriseResourceData=resourceData.getEnterpriseResource();
          EnterpriseResourceData parentData=enterpriseResourceData.getParentResource();
          Node node=(Node)resourceNodeMap.get(enterpriseResourceData);
          Node parentNode=(parentData==null)?
              null:
                ((Node)resourceNodeMap.get(parentData));
          project.getResourcePool().addToDefaultOutline(parentNode,node,(int)enterpriseResourceData.getChildPosition(),false);
          ((ResourceImpl)node.getImpl()).getGlobalResource().setResourcePool(project.getResourcePool());
        }
        project.getResourcePool().getResourceOutline().getHierarchy().cleanVoidChildren();

        //renumber resources
        project.getResourcePool().getResourceOutline().getHierarchy().visitAll(new Closure(){
          int id=1;
          public void execute(Object o) {
            Node node=(Node)o;
            if (node.getImpl() instanceof HasId){
              HasId impl=(HasId)node.getImpl();
              if (impl.getId()>0) impl.setId(id++); //if id=0 means id not used
            }
          }

        });
      }

      if (loadResources!=null){
        loadResources.execute(project);
        resourceNodeMap.clear();
        project.getResourcePool().getResourceOutline().getHierarchy().visitAll(new Closure(){
          public void execute(Object o) {
            Node node=(Node)o;
            HasKey k=(HasKey)node.getImpl();
            resourceNodeMap.put(k.getUniqueId(), node);
          }

        });
      }


      //tasks
      Collection tasks=projectData.getTasks();
      Map taskNodeMap=new HashMap();
      long projectId = project.getUniqueId();
      NormalTask task;

      if (tasks!=null){
        //order by position parents don't matter
        Collections.sort((List<TaskData>)tasks,new Comparator<TaskData>(){
          public int compare(TaskData task1, TaskData task2) {
            if (!task1.isExternal() && task2.isExternal()) return -1; //keep external tasks at the end
            else if (task1.isExternal() && !task2.isExternal()) return 1;
            else if (task1.getChildPosition()>task2.getChildPosition()) return 1;
            else return -1;
          }
        });

        //Set<Long> initialTaskIds=new HashSet<Long>();
        //project.setInitialTaskIds(initialTaskIds);
        for (Iterator i=tasks.iterator();i.hasNext();){
          task = null;
          TaskData taskData=(TaskData)i.next();
//        initialTaskIds.add(taskData.getUniqueId());
          if (taskData.isDirty()) fixCorruption=true; //recovers errors
//          if (Environment.isAddSummaryTask()&&taskData.getUniqueId()==Task.SUMMARY_UNIQUE_ID&&taskData.getSerialized()==null){ //claur
//          System.out.println("Fixing null binary summary task");
//          task = new NormalTask(project);
//          task.setName(taskData.getName());
//          task.setUniqueId(taskData.getUniqueId());
//          }else
          if (taskData.getSerialized()==null) {
            if (taskData.isTimesheetCreated()) {
              task = new NormalTask(project);
              task.setName(taskData.getName());
              System.out.println("made new task in serializer " + task + " parent " + taskData.getParentTask().getName());
            } else {
              continue; // void node
            }
          } else {
            try {
              task = (NormalTask)deserialize(taskData,reindex);
            } catch (Exception e) {
              if (taskData.isSubproject()){ //For migration
                try {
                  task = (NormalTask) Class.forName(Messages.getMetaString("Subproject")).getConstructor(new Class[]{Project.class,Long.class}).newInstance(project,taskData.getSubprojectId());
                } catch (Exception e1) {
                  e1.printStackTrace();
                }

//              task=new Subproject(project,taskData.getSubprojectId());
                task.setUniqueId(taskData.getUniqueId());
                task.setName(taskData.getName());
                ((SubProj)task).setSubprojectFieldValues(taskData.getSubprojectFieldValues());
              }
              else{
                e.printStackTrace();
                throw new IOException("Subproject:"+e);
              }
            }
          }
          taskNodeMap.put(taskData,NodeFactory.getInstance().createNode(task));
          task.setProject(project);
          project.initializeId(task);
          project.add(task);
          if (taskData.isExternal()) {
            task.setExternal(true);
            task.setProjectId(taskData.getProjectId());
            task.setAllSchedulesToCurrentDates();
            project.addExternalTask(task);
          } else {
            task.setOwningProject(project);
            task.setProjectId(projectId);
          }
          if (taskData.isSubproject()) {
            SubProj sub = (SubProj)task;
            sub.setSubprojectUniqueId(taskData.getSubprojectId());
            sub.setSubprojectFieldValues(taskData.getSubprojectFieldValues());
            sub.setSchedulesFromSubprojectFieldValues();
          }
//          if (task.isRoot()){ //claur
//            project.setSummaryTaskEnabled(true);
//          }

          WorkingCalendar cal=(WorkingCalendar) task.getWorkCalendar();
          if (cal!=null){ // use global one
            WorkingCalendar newCal = (WorkingCalendar) CalendarService.findBaseCalendar(cal.getName());
            if (newCal != null && newCal != cal)
              task.setWorkCalendar(newCal);
          }

          //project.addToDefaultOutline(null,);


          //assignments
          List assignments=new ArrayList();
//          if (Environment.isNoPodServer()&&task.getPersistedAssignments()!=null){ //claur
//            assignments.addAll(task.getPersistedAssignments());
//          }
          if (taskData.getAssignments()!=null) assignments.addAll(taskData.getAssignments());

          if (assignments.size()>0)
        for (Iterator j=assignments.iterator();j.hasNext();){
          Object obj=j.next();
          AssignmentData assignmentData=null;
//          if (loadResources!=null&&obj instanceof PersistedAssignment){ //claur
//          }else{
            assignmentData=(AssignmentData)obj;
            if (assignmentData.getSerialized() == null) { // timesheet created
                System.out.println("==== no cached start found " + task.getName());
                if (assignments.size()==1)
                  assignmentData.setResourceId(-1L);
                else j.remove();
            }
//          }
        }

          if (assignments.size()>0)
            for (Iterator j=assignments.iterator();j.hasNext();){
              Object obj=j.next();
              AssignmentData assignmentData=null;
              Assignment assignment=null;
              Resource resource;
              boolean assigned=true;
              int s;
//              if (loadResources!=null&&obj instanceof PersistedAssignment){ //claur
//                PersistedAssignment pa=(PersistedAssignment)obj;
//                assignment=pa.getAssignment();
//                s=pa.getSnapshot();
//
//                 long resId=pa.getResourceId();
//              Node node=(Node)resourceNodeMap.get(resId);
//              resource=node==null?ResourceImpl.getUnassignedInstance():(Resource)node.getImpl();
//
//              if (resource==null) assigned=false;
//              }else{
                assignmentData=(AssignmentData)obj;
                if (loadResources==null){
                  EnterpriseResourceData r=assignmentData.getResource();
                  if (r==null) assigned=false;
                  resource=(r==null)?ResourceImpl.getUnassignedInstance():(Resource)((Node)resourceNodeMap.get(r)).getImpl();
                }else{
                  long resId=assignmentData.getResourceId();
                  Node node=(Node)resourceNodeMap.get(resId);
                  resource=node==null?ResourceImpl.getUnassignedInstance():(Resource)node.getImpl();
                }
                if (assignmentData.getSerialized() != null){
                  try {
                    assignment=(Assignment)deserialize(assignmentData,reindex);
                  } catch (Exception e) {
                    e.printStackTrace();
                  }
                }
                if (assignmentData.getSerialized() == null||(assignmentData.getSerialized() != null&&assignment==null)) { // timesheet created
                  assignment = Assignment.getInstance(task,resource,  1.0, 0);
                  if (assignment.getCachedStart() == null) { //doesn't occur filtered above
                    System.out.println("==== no cached start found " + task.getName());

                  } else {
                    task.setActualStart(assignment.getCachedStart().getTime());
                    task.setActualFinish(assignment.getCachedEnd().getTime());
                  }
                }
                assignment.setCachedStart(assignmentData.getCachedStart());
                assignment.setCachedEnd(assignmentData.getCachedEnd());
                assignment.setTimesheetStatus(assignmentData.getTimesheetStatus());
                long lastUpdate = (assignmentData.getLastTimesheetUpdate() == null) ? 0 : assignmentData.getLastTimesheetUpdate().getTime();
                assignment.setLastTimesheetUpdate(lastUpdate);
                assignment.setWorkflowState(assignmentData.getWorkflowState());
                s=assignmentData.getSnapshotId();
//              }

              assignment.getDetail().setTask(task);
              assignment.getDetail().setResource(resource);
              Object snapshotId=new Integer(s);
              TaskSnapshot snapshot=(TaskSnapshot)task.getSnapshot(snapshotId);

              //TODO was commented but needed for loading  because task.getSnapshot(snapshotId)==null
              //for snapshots other than CURRENT
              if (snapshot==null){
                snapshot=new TaskSnapshot();
                snapshot.setCurrentSchedule(task.getCurrentSchedule());
                task.setSnapshot(snapshotId,snapshot);
              }
              if (Snapshottable.TIMESHEET.equals(snapshotId)) {
                assignment.setTimesheetAssignment(true);
              }
              //

              snapshot.addAssignment(assignment);

              if (assigned&&Snapshottable.CURRENT.equals(snapshotId)) resource.addAssignment(assignment);

              if (assignmentData!=null) assignmentData.emtpy();
              //incremental.addAssignment(assignmentData);
            }
//          task.setPersistedAssignments(null);
View Full Code Here

                  AssociationList snapshotAssignments=snapshot.getHasAssignments().getAssignments();
                  if (snapshotAssignments.size()>0){
//                    ArrayList<Assignment> assignmentsToLink=new ArrayList<Assignment>();
                      for (Iterator a=snapshotAssignments.listIterator();a.hasNext();){
                          Assignment assignment=(Assignment)a.next();
                          Resource resource=assignment.getResource();
                      if (resource==ResourceImpl.getUnassignedInstance()) continue;
                      Resource destResource=resourceMap.get(resource.getUniqueId());
                      if (destResource!=null){
                          if (Snapshottable.CURRENT.equals(s)){
                            if (destResource!=resource){ // use destination resource
                              resource=destResource;
                              assignment.getDetail().setResource(resource);
                            }
//                            assignmentsToLink.add(assignment);
                            resource.addAssignment(assignment);
                            NodeUndoInfo undo=new NodeUndoInfo(false);
                            ((ResourcePool)assignment.getResource().getDocument()).getObjectEventManager().fireCreateEvent(this,assignment,undo);
                          }
                      }else{
                        assignment.getDetail().setResource(ResourceImpl.getUnassignedInstance());
                      }
                      }
//                      for (Assignment assignment: assignmentsToLink){
//                        AssignmentService.getInstance().remove(assignmentsToLink, this,false);
//                        AssignmentService.getInstance().connect(assignment, this);
//                      }


                  }
              }

              project.initializeId(task);
              project.addPastedTask(task);

              insertedNodes.add(descendants[i]);
            }
          }
      }else if (resourcePool!=null){
          for (int i=0;i<descendants.length;i++){
            if (descendants[i].getImpl() instanceof Resource){
              Resource resource=(Resource)descendants[i].getImpl();
              model.getDataFactory().validateObject(resource,model,this,null,false);
              resourcePool.initializeId(resource);
              insertedNodes.add(descendants[i]);
            }
          }
View Full Code Here

TOP

Related Classes of com.projity.pm.resource.Resource

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.