Java tutorial
package com.oracle.pgbu.p6web.helper; import java.text.Collator; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Locale; import javax.xml.bind.JAXBElement; import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.namespace.QName; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import com.oracle.pgbu.common.enm.ActivityStatus; import com.oracle.pgbu.common.enm.ActivityType; import com.oracle.pgbu.common.enm.ProjectStatus; import com.oracle.pgbu.common.enm.ProjectType; import com.oracle.pgbu.common.enm.TimesheetStatus; import com.oracle.pgbu.common.pagefactory.CustomPageFactory; import com.oracle.pgbu.common.support.Utilities; import com.oracle.pgbu.common.utils.ApplicationProperties; import com.oracle.pgbu.intgtest.helper.StringGen; import com.oracle.pgbu.p6web.p6web; import com.oracle.pgbu.p6web.testcases.BaseTestCase; import com.primavera.ws.p6.activity.Activity; import com.primavera.ws.p6.activitynote.ActivityNote; import com.primavera.ws.p6.notebooktopic.NotebookTopic; import com.primavera.ws.p6.project.Project; import com.primavera.ws.p6.resource.Resource; import com.primavera.ws.p6.resourceassignment.ResourceAssignment; import com.primavera.ws.p6.user.User; import com.primavera.ws.p6.wbs.WBS; public class DataHelper extends BaseTestCase { public User tsUser; public Resource tsRsrc; public static Project project; public static WBS wbs1; public List<Activity> activityList = new ArrayList<Activity>(); public List<Activity> activityList2 = new ArrayList<Activity>(); public List<Activity> particularTypeActivities = new ArrayList<Activity>(); public List<String> resourceNameList = new ArrayList<String>(); public List<String> resourceIdList = new ArrayList<String>(); Calendar cal = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); public JAXBElement<XMLGregorianCalendar> actStart = wsUtils.getJAXBDate(cal.getTime(), "ActualStartDate"); public JAXBElement<XMLGregorianCalendar> actFinish = wsUtils.getJAXBDate(cal.getTime(), "ActualFinishDate"); public JAXBElement<XMLGregorianCalendar> remainingEarlyStart; public JAXBElement<XMLGregorianCalendar> remainingEarlyEnd; public JAXBElement<XMLGregorianCalendar> actualStart; public JAXBElement<XMLGregorianCalendar> actualFinish; private User subordinateUser; public Resource subordinateResource; public int timesheetPeriodID2; public int timesheetPeriodID3; public int timesheetPeriodID4; public static List<String> activitiesList = new ArrayList<>(); public static List<String> activitiesList0 = new ArrayList<>(); public static List<Activity> actList = new ArrayList<>(); public TimesheetUtility TSUtil = new TimesheetUtility(); public List<ResourceAssignment> rsrcAssignments = new ArrayList<>(); public ApplicationProperties appProperties = p6web.getInstance(); public List<NotebookTopic> notebooks = new ArrayList<>(); public List<ActivityNote> activityNote = new ArrayList<>(); Collator collator = Collator.getInstance(); public String projectID; public Resource resource; public static Resource resource1; public static Resource resource2; private static List<Project> projectList = new ArrayList<Project>(); public static List<Activity> otherTypeOfActivities = new ArrayList<Activity>(); public List<Activity> overdueActivities = new ArrayList<Activity>(); //Creates Timesheet project public void createProject(ProjectStatus m_projectStatus) { project = dataSetup.projects.createProject("TestProject-" + utils.randomChars(6), m_projectStatus.toString()); } public Project createProject(ProjectStatus projectStatus, ProjectType projectType) { projectID = "TestProject-" + utils.randomChars(6); project = dataSetup.projects.createProject(projectID, projectStatus.toString(), projectType.toString()); return project; } //Creates Timesheet project public Project createProjectWbs(Project projectwbs, ProjectStatus m_projectStatus) throws InterruptedException { return projectwbs = dataSetup.projects.createProject("TestProject-" + utils.randomChars(6), m_projectStatus.toString()); } /** * Creates Timesheet project with Log Additional Time * @param m_projectStatus */ public void createProjectWithLogAdditionalTime(ProjectStatus m_projectStatus) { project = dataSetup.projects.createProjectWithLogAdditionalTime("TestProject-" + utils.randomChars(6), m_projectStatus.toString()); } /** * Creates Timesheet project with reviewer * @param m_projectStatus */ public void createProjectWithStatusReviewer(ProjectStatus m_projectStatus) { project = dataSetup.projects.createProjectWithStatusReviewer("TestProject-" + utils.randomChars(6), m_projectStatus.toString()); } /** * Creates Timesheet for a project with reviewer and different project Id and Name * @param m_projectStatus */ public void createProjectWithStatusReviewerAndDiffProjIdName(ProjectStatus m_projectStatus) { project = dataSetup.projects.createProjectWithStatusReviewerAndDiffProjIdName( "TestProject-" + utils.randomChars(6), m_projectStatus.toString()); } public int createBaselineProject(int OriginalProjectObjectId, int TargetProjectObjectId) { return dataSetup.projects.createBaselineProject(OriginalProjectObjectId, TargetProjectObjectId); } //Creates WBS public WBS createWBS(Project projectwbs, String wbsCode, WBS wbs) { return wbs = dataSetup.wbs.createWBS(projectwbs.getObjectId(), "wbs-" + utils.randomChars(3), wbsCode); } //deleteWBS public void deleteWBS(WBS wbs) { dataSetup.wbs.deleteWBS(wbs.getObjectId()); } //Creates Inactive WBS public WBS createInactiveWBS(Project projectwbs, String wbsCode, WBS wbs) { return wbs = dataSetup.wbs.createInactiveWBS(projectwbs.getObjectId(), "wbs-" + utils.randomChars(3), wbsCode); } //creates n number of activities with Not-Started status falling in current time period public List<Activity> createActivity(int i) { String name; String id; for (int j = 0; j < i; j++) { name = "TestAct" + utils.randomChars(10); id = "TestAct" + utils.randomChars(10); activityList.add(dataSetup.activities.createActivity(project.getObjectId(), id, name)); activitiesList.add(id + " - " + name); } return activityList; } //creates n number of activities with Not-Started status falling in current time period public List<Activity> createStarredActivity(int i) { String name; String id; for (int j = 0; j < i; j++) { name = "TestAct" + utils.randomChars(10); id = "TestAct" + utils.randomChars(10); activityList2.add( dataSetup.activities.createActivity(project.getObjectId(), id, name, ActivityStatus.COMPLETED)); activitiesList0.add(id + " - " + name); } return activityList2; } public void createActivity(ActivityType actType, Resource rsrc) { particularTypeActivities.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), actType.toString(), rsrc)); } public void createActivity(ActivityType actType) { particularTypeActivities.add(dataSetup.activities.createActivityOfType(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), actType.toString())); } public void createMilestoneActivity(ActivityType actType) { cal = Calendar.getInstance(); cal.add(Calendar.DATE, 1); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); particularTypeActivities.add( dataSetup.activities.createActivityOfType(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), actType.toString(), remainingEarlyStart)); } //Creates 4 activities with not started status falling in different time periods public List<Activity> createActivities() { activityList2.clear(); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10))); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); cal.add(Calendar.DATE, 1); cal2.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); cal2.add(Calendar.DATE, 7); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); cal.add(Calendar.DATE, 1); cal2.add(Calendar.DATE, 7); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); cal.add(Calendar.DATE, 7); cal2.add(Calendar.DATE, 7); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); return activityList2; } //Creates 4 activities with different status' NOT falling in current time periods public List<Activity> createActivitiesDiffStatus() { activityList2.clear(); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); cal.add(Calendar.DATE, 1); cal2.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); cal2.add(Calendar.DATE, 7); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); actualStart = wsUtils.getJAXBDate(cal.getTime(), "ActualStartDate"); actualFinish = wsUtils.getJAXBDate(cal2.getTime(), "ActualFinishDate"); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.IN_PROGRESS, remainingEarlyStart, remainingEarlyEnd, actualStart, null)); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.COMPLETED, null, null, actualStart, actualFinish)); return activityList2; } //Creates 4 activities with different status' falling in current time periods public List<Activity> createActivitiesDiffStatusCurrentTimePeriod() { cal = Calendar.getInstance(); cal2 = Calendar.getInstance(); activityList2.clear(); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); actualStart = wsUtils.getJAXBDate(cal.getTime(), "ActualStartDate"); actualFinish = wsUtils.getJAXBDate(cal2.getTime(), "ActualFinishDate"); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.IN_PROGRESS, remainingEarlyStart, remainingEarlyEnd, actualStart, null)); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.COMPLETED, null, null, actualStart, actualFinish)); return activityList2; } //Creates 4 activities with different status' NOT falling in current time periods public List<Activity> createActivitiesDiffStatusOneOverdue() { activityList2.clear(); cal.add(Calendar.DATE, -7); cal2.add(Calendar.DATE, -6); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); cal.add(Calendar.DATE, 7); cal2.add(Calendar.DATE, 13); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); actualStart = wsUtils.getJAXBDate(cal.getTime(), "ActualStartDate"); actualFinish = wsUtils.getJAXBDate(cal2.getTime(), "ActualFinishDate"); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.IN_PROGRESS, remainingEarlyStart, remainingEarlyEnd, actualStart, null)); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.COMPLETED, null, null, actualStart, actualFinish)); return activityList2; } //Creates 4 activities with different status' and different reend date/actual finish date (for testing sorting order in UI) public void createActivityOther() { cal = Calendar.getInstance(); cal2 = Calendar.getInstance(); activityList2.clear(); cal.add(Calendar.DATE, 1); cal2.add(Calendar.DATE, 10); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.IN_PROGRESS)); cal.add(Calendar.DATE, 1); cal2.add(Calendar.DATE, 1); actualStart = wsUtils.getJAXBDate(cal.getTime(), "ActualStartDate"); actualFinish = wsUtils.getJAXBDate(cal2.getTime(), "ActualFinishDate"); // activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), // ActivityStatus.COMPLETED, null, null, actualStart, actualFinish)); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.COMPLETED, null, null, null, actualFinish)); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.COMPLETED)); } //Creates activity of particular type public Activity createActivityWithType(String actType) { return dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), actType); } public Resource createResource(String rsrcShortName, String rsrcName) { Resource tsRsrc = dataSetup.resources.createResource(rsrcShortName, rsrcName); resourceNameList.add(tsRsrc.getName()); resourceIdList.add(tsRsrc.getId()); return tsRsrc; } public void createResourceAssignment(List<Activity> activityList, Resource tsRsrc) { for (Activity act : activityList) { if (act != null) createResourceAssignment(act, tsRsrc); } } public void createResourceAssignment(Activity activity, Resource tsRsrc) { rsrcAssignments .add(dataSetup.resources.createResourceAssignment(activity.getObjectId(), tsRsrc.getObjectId())); } /** * createResource Assignment But Not As PrimaryResource * @param activity * @param tsRsrc */ public void createResourceAssignmentNotAsPrimaryResource(Activity activity, Resource tsRsrc) { rsrcAssignments.add(dataSetup.resources.createResourceAssignmentNotAsPrimaryResource(activity.getObjectId(), tsRsrc.getObjectId())); } //Creates assignments with different status' public void createResourceOtherAssignment(List<Activity> activityList) { dataSetup.resources.createResourceAssignment(activityList.get(0).getObjectId(), resource.getObjectId()); dataSetup.resources.createResourceAssignment(activityList.get(1).getObjectId(), resource.getObjectId()); //In-progress assignment dataSetup.resources.createResourceAssignment(activityList.get(2).getObjectId(), resource.getObjectId(), actStart); //Completed assignment dataSetup.resources.createResourceAssignment(activityList.get(3).getObjectId(), resource.getObjectId(), actStart, actFinish); } public void createResourceUserAssignment(Resource resource, User user) { dataSetup.resources.createResourceUserAssignment(resource.getObjectId(), user.getObjectId()); } public void createTimesheetData(User user) { createProject(ProjectStatus.ACTIVE); createActivity(4); resource = createResource(user.getName(), user.getName()); createResourceUserAssignment(resource, user); createResourceAssignment(activityList, resource); // resource.setUseTimesheets(true); dataSetup.resources.updateResource(resource); TSUtil.createCurrentTimesheetPeriod(); } /** * create Timesheet Data With Status Reviewer * @param user */ public void createTimesheetDataWithStatusReviewer(User user) { createProjectWithStatusReviewer(ProjectStatus.ACTIVE); createActivity(4); resource = createResource(user.getName(), user.getName()); createResourceUserAssignment(resource, user); createResourceAssignment(activityList, resource); dataSetup.resources.updateResource(resource); TSUtil.createCurrentTimesheetPeriod(); } /** * create Timesheet Data With Status Reviewer for a project having different project Id and Name * @param user */ public void createTimesheetDataWithStatusReviewerForDiffProjIdName(User user) { createProjectWithStatusReviewerAndDiffProjIdName(ProjectStatus.ACTIVE); createActivity(4); resource = createResource(user.getName(), user.getName()); createResourceUserAssignment(resource, user); createResourceAssignment(activityList, resource); dataSetup.resources.updateResource(resource); TSUtil.createCurrentTimesheetPeriod(); } /* public void createTimesheetDataMultipleAssignmentsInMultipleTimePeriods(User user) { createProject(ProjectStatus.ACTIVE); createActivity(4); resource = createResource(user.getName(), user.getName()); createResourceUserAssignment(resource, user); createResourceAssignment(activityList, resource); // resource.setUseTimesheets(true); dataSetup.resources.updateResource(resource); actList1.addAll(createActivitiesDiffStatus()); actList2.addAll(createActivitiesDiffStatus()); actList3.addAll(createActivitiesDiffStatus()); actList4.addAll(createActivitiesDiffStatus()); createResourceAssignment(actList1, resource); createResourceAssignment(actList2, resource); createResourceAssignment(actList3, resource); createResourceAssignment(actList4, resource); TSUtil.createCurrentTimesheetPeriod(); }*/ //Creates different timesheet periods and timesheet data with different assignments falling in different timesheet periods public void createTimesheetDataAssign() { Calendar cal = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); tsUser = createUser(); dataSetup.users.createUserLicense(tsUser.getObjectId()); tsRsrc = createResource(tsUser.getName(), tsUser.getName()); // tsRsrc.setUseTimesheets(true); dataSetup.resources.updateResource(tsRsrc); createResourceUserAssignment(tsRsrc, tsUser); createProject(ProjectStatus.ACTIVE); createActivities(); createResourceAssignment(activityList2, tsRsrc); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); cal.add(Calendar.DATE, 1); cal2.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek() + 6); cal2.add(Calendar.DATE, 7); timesheetPeriodID2 = createTimesheetPeriod(cal.getTime(), cal2.getTime()); cal.add(Calendar.DATE, 1); cal2.add(Calendar.DATE, 7); timesheetPeriodID3 = createTimesheetPeriod(cal.getTime(), cal2.getTime()); cal.add(Calendar.DATE, 7); cal2.add(Calendar.DATE, 7); timesheetPeriodID4 = createTimesheetPeriod(cal.getTime(), cal2.getTime()); } public int createTimesheetPeriod(Date startDate, Date endDate) { return TSUtil.createTimesheetPeriod(startDate, endDate); } public void createNotebookTopic(Activity activity) { notebooks.add(dataSetup.notebooks.createNotebookTopic("TestNotebookTopic-" + utils.randomChars(6))); activityNote.add(dataSetup.activities.createActivityNote(activity, notebooks.get(notebooks.size() - 1), "TestNote" + utils.randomChars(6))); } public void noTimeperiodData(User user) { TSUtil.deleteCurrentTimePeriodData(); createProject(ProjectStatus.ACTIVE); createActivity(4); resource = createResource(user.getName(), user.getName()); createResourceUserAssignment(resource, user); createResourceAssignment(activityList, resource); // resource.setUseTimesheets(true); dataSetup.resources.updateResource(resource); } public void createTimeSheetDataManagerSubordinate(int numOfSubordinates, User user) { createTimesheetData(user); for (int i = 0; i < numOfSubordinates; i++) { createSubordinatedata(user); } } /* public void setEditSubordinateTimesheet() { myTaskPage = CustomPageFactory.initElements(MyTasksPage.class); appSettingsPage = CustomPageFactory.initElements(ApplicationSettingsPage.class); myTaskPage.selectDynamicObject("link", "global_application").click(); appSettingsPage.waitForReady(); if (!appSettingsPage.editSubordinateTimesheet.isChecked()) { appSettingsPage.editSubordinateTimesheet.check(); appSettingsPage.sleep(10); appSettingsPage.selectDynamicObject("button", "global_save").click(); appSettingsPage.waitForSave(); } } public void setReportingHoursByReportingPeriod(ReportingHours reportingHour) { myTaskPage = CustomPageFactory.initElements(MyTasksPage.class); appSettingsPage = CustomPageFactory.initElements(ApplicationSettingsPage.class); myTaskPage.selectDynamicObject("link", "global_application").click(); appSettingsPage.waitForReady(); if (reportingHour == ReportingHours.REPORTING_PERIOD) { if (!appSettingsPage.byReportingPeriod.isSelected()) { appSettingsPage.byReportingPeriod.select(); appSettingsPage.sleep(10); appSettingsPage.selectDynamicObject("button", "global_save").click(); appSettingsPage.waitForSave(); } } else { if (!appSettingsPage.daily.isSelected()) { appSettingsPage.daily.select(); appSettingsPage.sleep(10); appSettingsPage.selectDynamicObject("button", "global_save").click(); appSettingsPage.waitForSave(); } } } */ public void createSubordinatedata(User user) { String m_subordinateUserName = "TestUser" + StringGen.generate(10); subordinateUser = dataSetup.users.createUser(m_subordinateUserName, m_password); dataSetup.users.createUserLicense(subordinateUser.getObjectId()); subordinateResource = dataSetup.resources.createResource(m_subordinateUserName, m_subordinateUserName); dataSetup.resources.createResourceUserAssignment(subordinateResource.getObjectId(), subordinateUser.getObjectId()); // subordinateResource.setUseTimesheets(true); JAXBElement<Integer> jaxbElementObject = new JAXBElement(new QName("TimesheetApprovalManagerObjectId"), Integer.class, user.getObjectId()); subordinateResource.setTimesheetApprovalManagerObjectId(jaxbElementObject); dataSetup.resources.updateResource(subordinateResource); createResourceAssignment(activityList, subordinateResource); resourceNameList.add(subordinateResource.getName()); resourceIdList.add(subordinateResource.getId()); } //Creates 3 activities with different status' falling in current time periods without 'In-Progress' task public List<Activity> createActivitiesDiffStatusWithOutInProgress() { activityList2.clear(); cal = Calendar.getInstance(); cal2 = Calendar.getInstance(); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); actualStart = wsUtils.getJAXBDate(cal.getTime(), "ActualStartDate"); actualFinish = wsUtils.getJAXBDate(cal2.getTime(), "ActualFinishDate"); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.COMPLETED, null, null, actualStart, actualFinish)); return activityList2; } //Creates 4 activities with different status' with long timeperiod public List<Activity> createActivitiesWithLongTimePeriod() { activityList2.clear(); cal = Calendar.getInstance(); cal2 = Calendar.getInstance(); cal.add(Calendar.DATE, 24); cal2.add(Calendar.DATE, 36); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); actualStart = wsUtils.getJAXBDate(cal.getTime(), "ActualStartDate"); actualFinish = wsUtils.getJAXBDate(cal2.getTime(), "ActualFinishDate"); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.IN_PROGRESS, remainingEarlyStart, remainingEarlyEnd, actualStart, null)); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.COMPLETED, null, null, actualStart, actualFinish)); return activityList2; } public void createRelationship(Activity predecessor, Activity successor, String relationshipType) { dataSetup.activities.createSuccessor(predecessor.getObjectId(), successor.getObjectId()); predecessor.setType(relationshipType); } public String getTimesheetPeriodStartDate(int tsPeriodID) { return TSUtil.getTimesheetPeriodStartDate(tsPeriodID); } public String getTimesheetPeriodEndDate(int tsPeriodID) { return TSUtil.getTimesheetPeriodEndDate(tsPeriodID); } public String getTimesheetStatus(int tsPeriodID, Resource rsrc) { String status = ""; if (TSUtil.getTimesheetStatus(tsPeriodID, rsrc.getObjectId()) == null) status = Utilities.getInstance().getString("timesheet_status_NotStarted"); else if (TSUtil.getTimesheetStatus(tsPeriodID, rsrc.getObjectId()) == TimesheetStatus.ACTIVE.toString()) status = Utilities.getInstance().getString("timesheet_status_ACTIVE"); else if (TSUtil.getTimesheetStatus(tsPeriodID, rsrc.getObjectId()) == TimesheetStatus.SUBMITTED.toString()) status = Utilities.getInstance().getString("timesheet_status_SUBMITTED"); else if (TSUtil.getTimesheetStatus(tsPeriodID, rsrc.getObjectId()) == TimesheetStatus.APPROVED.toString()) status = Utilities.getInstance().getString("timesheet_status_APPROVED"); return status; } public void approveTimesheet(int tsPeriodID, int rsrcID, WebDriver m_driver) throws InterruptedException { TSUtil.approveTimesheet(tsPeriodID, rsrcID); Thread.sleep(1000); m_driver.get(appProperties.getUrl()); } public void deleteTimesheetData() { TSUtil.deleteTimesheetAssignments(TSUtil.timesheetPeriodID); TSUtil.deleteTimesheet(TSUtil.timesheetPeriodID); TSUtil.deleteTimesheetPeriod(TSUtil.timesheetPeriodID); } public boolean isSortedAscendingByAttribute(List<String> elementsList) { boolean sorted = true; for (int i = 1; i < elementsList.size(); i++) { collator.setStrength(Collator.PRIMARY); if (collator.compare(elementsList.get(i - 1), elementsList.get(i)) > 0) sorted = false; } return sorted; } public boolean isSortedAscendingByAttributeCase(List<String> elementsList) { boolean sorted = true; for (int i = 1; i < elementsList.size(); i++) { if (elementsList.get(i - 1).compareTo(elementsList.get(i)) > 0) sorted = false; } return sorted; } public boolean isSortedDescendingByAttribute(List<String> elementsList) { boolean sorted = true; for (int i = 1; i < elementsList.size(); i++) { collator.setStrength(Collator.PRIMARY); if (collator.compare(elementsList.get(i - 1), elementsList.get(i)) < 0) sorted = false; } return sorted; } //Creates project list public void createProjectlist(ProjectStatus m_projectStatus) throws InterruptedException { getProjectList().add(dataSetup.projects.createProject("TestProject-" + utils.randomChars(6), m_projectStatus.toString())); } /** * Method to create particular types of activities in a specific project * @param actType */ public void createActivityInAProject(Project projectassignment, ActivityType actType) { otherTypeOfActivities.add(dataSetup.activities.createActivityOfType(projectassignment.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), actType.toString())); } /** * Method to create normal activities in a specific project * @param actType */ public void createNormalActivityInAProject(Project projectassignment, ActivityType actType) { otherTypeOfActivities.add(dataSetup.activities.createActivityOfType(projectassignment.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), actType.toString())); } public Resource createResourcelist(String rsrcShortName, String rsrcName) { Resource tsRsrc = dataSetup.resources.createResource(rsrcShortName, rsrcName); resourceNameList.add(tsRsrc.getName()); resourceIdList.add(tsRsrc.getId()); return tsRsrc; } /** * Get the project object * @return project */ public Project getProject() { return project; } /** * Creates 4 activities with different status' falling in current time periods * @param project * @return list of activities */ public List<Activity> createActivitiesDiffStatusCurrentTimePeriod(Project project) { cal = Calendar.getInstance(); cal2 = Calendar.getInstance(); activityList2.clear(); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); activityList2 .add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); actualStart = wsUtils.getJAXBDate(cal.getTime(), "ActualStartDate"); actualFinish = wsUtils.getJAXBDate(cal2.getTime(), "ActualFinishDate"); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.IN_PROGRESS, remainingEarlyStart, remainingEarlyEnd, actualStart, null)); activityList2.add(dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), ActivityStatus.COMPLETED, null, null, actualStart, actualFinish)); return activityList2; } /** * Returns Locale based on the locale set in properties * @return */ public Locale returnLocale() { /** Locale.CANADA,Locale.CANADA_FRENCH,Locale.CHINA,Locale.CHINESE,Locale.ENGLISH,Locale.FRANCE,Locale.FRENCH,Locale.GERMAN,Locale.GERMANY, Locale.ITALIAN,Locale.ITALY,Locale.JAPAN,Locale.JAPANESE,Locale.KOREA,Locale.KOREAN,Locale.PRC,Locale.ROOT,Locale.SIMPLIFIED_CHINESE, Locale.TAIWAN,Locale.TRADITIONAL_CHINESE,Locale.UK,Locale.US}; */ switch (Utilities.appProperties.getLocale()) { case "zh_CN": return Locale.CHINESE; case "zh_TW": return Locale.TAIWAN; default: return Locale.ENGLISH; } } /** * This method generates and returns a string having data to compare with the time period in the application * @param period : Current, Past, Future * * @return: Returns a string having formated date to compare with the time period in the application */ public String createTimeperiodData(String period) { // set the date Calendar cal = Calendar.getInstance(); SimpleDateFormat df = new SimpleDateFormat("MMM-dd-yyyy"); // cal.set(2011, 10 - 1, 12); int year = cal.get(Calendar.YEAR); switch (period.toLowerCase()) { case "past": cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH) - 7); break; case "future": cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH) + 7); break; default: cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)); } // "calculate" the start date of the week Calendar first = (Calendar) cal.clone(); first.add(Calendar.DAY_OF_WEEK, first.getFirstDayOfWeek() - first.get(Calendar.DAY_OF_WEEK)); // and add six days to the end date Calendar last = (Calendar) first.clone(); last.add(Calendar.DAY_OF_YEAR, 6); df = new SimpleDateFormat("MMM-dd-yyyy"); switch (Utilities.appProperties.getLocale().toLowerCase()) { case "en": case "current": return df.format(first.getTime()) + " - " + df.format(last.getTime()); default: // Start Date String YYYY = df.getDateInstance(df.LONG, returnLocale()).format(first.getTime()).substring(0, 4); String MMM = df.getDateInstance(df.LONG, returnLocale()).format(first.getTime()).substring(5, 8); String DD = df.getDateInstance(df.LONG, returnLocale()).format(first.getTime()).substring(8, 10); if (first.get(Calendar.DAY_OF_MONTH) < 10) { DD = DD.substring(0, 1); DD = "0" + DD; } // End date String YYYY1 = df.getDateInstance(df.LONG, returnLocale()).format(last.getTime()).substring(0, 4); String MMM1 = df.getDateInstance(df.LONG, returnLocale()).format(last.getTime()).substring(5, 8); String DD1 = df.getDateInstance(df.LONG, returnLocale()).format(last.getTime()).substring(8, 10); if (last.get(Calendar.DAY_OF_MONTH) < 10) { DD1 = DD1.substring(0, 1); DD1 = "0" + DD1; } return MMM + "-" + DD + "-" + YYYY + " - " + MMM1 + "-" + DD1 + "-" + YYYY1; } } /** * Click a link using the link text. * @param linkText * @param m_driver Webdriver instance */ public void clickLink(String linkText, WebDriver m_driver) { m_driver.findElement(By.linkText(linkText)).click(); } /** * Returns the start date of the time period of the week number passed * @param week: week ahed of the current week */ public String getTimesheetStartDate(int week) { // set the date Calendar cal = Calendar.getInstance(); SimpleDateFormat df = new SimpleDateFormat("MMM-dd-yyyy"); // cal.set(2011, 10 - 1, 12); int year = cal.get(Calendar.YEAR); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH) + (7 * week)); // "calculate" the start date of the week Calendar first = (Calendar) cal.clone(); first.add(Calendar.DAY_OF_WEEK, first.getFirstDayOfWeek() - first.get(Calendar.DAY_OF_WEEK)); // and add six days to the end date Calendar last = (Calendar) first.clone(); last.add(Calendar.DAY_OF_YEAR, 6); df = new SimpleDateFormat("MMM-dd-yyyy"); switch (Utilities.appProperties.getLocale().toLowerCase()) { case "en": case "current": return df.format(first.getTime()); default: // Start Date String YYYY = df.getDateInstance(df.LONG, returnLocale()).format(first.getTime()).substring(0, 4); String MMM = df.getDateInstance(df.LONG, returnLocale()).format(first.getTime()).substring(5, 8); String DD = df.getDateInstance(df.LONG, returnLocale()).format(first.getTime()).substring(8, 10); if (first.get(Calendar.DAY_OF_MONTH) < 10) { DD = DD.substring(0, 1); DD = "0" + DD; } // End date String YYYY1 = df.getDateInstance(df.LONG, returnLocale()).format(last.getTime()).substring(0, 4); String MMM1 = df.getDateInstance(df.LONG, returnLocale()).format(last.getTime()).substring(5, 8); String DD1 = df.getDateInstance(df.LONG, returnLocale()).format(last.getTime()).substring(8, 10); if (last.get(Calendar.DAY_OF_MONTH) < 10) { DD1 = DD1.substring(0, 1); DD1 = "0" + DD1; } return MMM + "-" + DD + "-" + YYYY; } } /** * * @param check : True if the box has to be checked and false to uncheck * @param checkBoxElement : Checkbox to be clicked */ public boolean clickCheckBox(boolean check, WebElement checkBoxElement) { if (!check && checkBoxElement.isSelected()) { checkBoxElement.click(); return true; } if (check && !checkBoxElement.isSelected()) { checkBoxElement.click(); return true; } return false; } public List<Project> getProjectList() { return projectList; } public void setProjectList(List<Project> projectList) { DataHelper.projectList = projectList; } //Creates overdue activities public List<Activity> createOverdueActivities(int i) { overdueActivities.clear(); cal.add(Calendar.DATE, -7); cal2.add(Calendar.DATE, -6); remainingEarlyStart = wsUtils.getJAXBDate(cal.getTime(), "RemainingEarlyStartDate"); remainingEarlyEnd = wsUtils.getJAXBDate(cal2.getTime(), "RemainingEarlyFinishDate"); for (int j = 0; j < i; j++) { overdueActivities.add( dataSetup.activities.createActivity(project.getObjectId(), "TestAct" + utils.randomChars(10), "TestAct" + utils.randomChars(10), remainingEarlyStart, remainingEarlyEnd)); } return overdueActivities; } }