Merge branch 'performance'

main
Manuel Tauber 2024-06-04 12:26:25 +02:00
commit 6b742e9f13
1 changed files with 64 additions and 70 deletions

View File

@ -31,7 +31,7 @@ import com.nttdata.calender.errorhandling.ErrorTypes.ValidationError;
public class Change { public class Change {
private Query queryChange; private Query queryChange;
private RemedyJavaAPI api; private RemedyJavaAPI api;
private final static String formName = "ASF:WI_TAS_Paket"; private final static String formName = "ASF:WI_TAS_PaketJChangeJPackage";
/** /**
* Constructor for the {@link Change} class which gets autowired with the * Constructor for the {@link Change} class which gets autowired with the
@ -43,33 +43,35 @@ public class Change {
public Change(RemedyJavaAPI api) { public Change(RemedyJavaAPI api) {
this.api = api; this.api = api;
this.queryChange = new Query.QueryBuilder(formName) this.queryChange = new Query.QueryBuilder(formName)
.addFieldId("ChangeNr", 1000000182) .addFieldId("ChangeNr", 1100000182)
.addFieldId("SupportGroup", 1000000015) .addFieldId("SupportGroup", 1100000015)
.addFieldId("ManagerGroup", 1000003229) .addFieldId("ManagerGroup", 1000003229)
.addFieldId("State", 7) .addFieldId("State", 666100007)
.addFieldId("PackageInstanceId", 179) .addFieldId("PackageInstanceId", 666100179)
.addFieldId("ResourceName", 1000000000) .addFieldId("ResourceName", 1100000000)
.addFieldId("D1", 1000000349) .addFieldId("D1", 1000000349)
.addFieldId("D2", 1000000350) .addFieldId("D2", 1100000350)
.addFieldId("D3", 666000350) .addFieldId("D3", 666100350)
.addFieldId("D4", 1000000364) .addFieldId("D4", 1100000364)
.addFieldId("StatusReason", 1000000150) .addFieldId("StatusReason", 1000000150)
.addFieldId("ApprovalStatus", 1000003264) .addFieldId("ApprovalStatus", 1000003264)
.addFieldId("CoordinatorSg", 1000003229) .addFieldId("CoordinatorSg", 1000003229) // ?
.addFieldId("CoordinatorSgId", 1000003234) .addFieldId("CoordinatorSgId", 1000003234)
.addFieldId("ChangeCoordinator", 1000003230) .addFieldId("ChangeCoordinator", 1000003230)
.addFieldId("SupportGroupId", 1000000079) .addFieldId("SupportGroupId", 1100000079)
.addFieldId("ProviderCluster", 610020002) .addFieldId("ProviderCluster", 610020002)
.addFieldId("ChangeImplementer", 610023230) .addFieldId("ChangeImplementer", 610023230)
.addFieldId("ChangeImplementerLogin", 610023231) .addFieldId("ChangeImplementerLogin", 610023231)
.addFieldId("ChangeImplementerPersonId", 610023232) .addFieldId("ChangeImplementerPersonId", 610023232)
.addFieldId("PackageType", 670031016) .addFieldId("PackageType", 670031016)
.addFieldId("Contract", 670031002) .addFieldId("Contract", 670031002)
.addFieldId("PlanTimeHours", 666000009) .addFieldId("PlanTimeHours", 666100009)
.addFieldId("PlanTimeMinutes", 666000010) .addFieldId("PlanTimeMinutes", 666100001)
.addFieldId("Approval", 1000003278) .addFieldId("Approval", 1000003278)
.addFieldId("ApprovalProcessName", 301322300) .addFieldId("ApprovalProcessName", 301322300)
.addFieldId("CurrentStageNumber", 301541700) .addFieldId("CurrentStageNumber", 301541700)
.addFieldId("PackageName", 200000020)
.addFieldId("OriginalRequestID", 666100000)
.build(); .build();
} }
@ -87,95 +89,85 @@ public class Change {
*/ */
public ChangeResponse get(ChangeRequest request) throws ARException, NotFoundError, ValidationError { public ChangeResponse get(ChangeRequest request) throws ARException, NotFoundError, ValidationError {
long startTime = System.currentTimeMillis();
LoggerTemplates log = new LoggerTemplates(api); LoggerTemplates log = new LoggerTemplates(api);
var peopleFullName = processPeopleInfo(request); var peopleFullName = processPeopleInfo(request);
var filter = request.getFilter(); var filter = request.getFilter();
for (var v : filter.getFilterElement()) { for (var v : filter.getFilterElement()) {
System.out.println(v.getFilter() + ", " + v.getColumn() +", " + v.getCriteria()); System.out.println(v.getFilter() + ", " + v.getColumn() + ", " + v.getCriteria());
} }
var qualifier = filter.constructQualifier(queryChange, api); var qualifier = filter.constructQualifier(queryChange, api);
SortInfo sort = request.constructSortInfo(queryChange); SortInfo sort = request.constructSortInfo(queryChange);
log.initLog("getChanges", api.getUser()); // Logging log.initLog("getChanges", api.getUser()); // Logging
var entries = api.queryFieldsById(qualifier, this.queryChange.getFieldIds(), var entries = api.queryFieldsById(qualifier, this.queryChange.getFieldIds(),
this.queryChange.getFormName(), this.queryChange.getFormName(),
sort, request.getSliceStart(), sort, request.getSliceStart(),
request.getSliceEnd()); request.getSliceEnd());
log.qualifierLog(queryChange.getFormName(), qualifier); // Logging log.qualifierLog(queryChange.getFormName(), qualifier); // Logging
System.out.println(qualifier); System.out.println(qualifier);
var entriesSize = api.getFormSize(qualifier, this.queryChange.getFormName()); var entriesSize = api.getFormSize(qualifier, this.queryChange.getFormName());
var changes = new ArrayList<ChangeItem>(); var changes = new ArrayList<ChangeItem>();
System.out.println("###ABGERUFEN");
for (var entry : entries) {
var change = new ChangeItem(entry.getEntryId());
for (var entry : entries) {
var change = new ChangeItem(getValueStringByID(entry, "OriginalRequestID"));
boolean approval = getValueStringByID(entry, "Approval").equals("0") ? true : false; boolean approval = getValueStringByID(entry, "Approval").equals("0") ? true : false;
// if (approval) { if (approval) {
// var queryApproval = new Query.QueryBuilder("CHG:ChangeAPDetailSignature") var queryApproval = new Query.QueryBuilder("CHG:ChangeAPDetailSignature")
// .addFieldId("Approvers", 13207).build(); .addFieldId("Approvers", 13207).build();
// String qual = "(\'1000000182\' = \"" + getValueStringByID(entry, "ChangeNr") String qual = "(\'1000000182\' = \"" + getValueStringByID(entry, "ChangeNr")
// + "\") AND (\'10000\' = \"" + "\") AND (\'10000\' = \""
// + getValueStringByID(entry, "ApprovalProcessName") + getValueStringByID(entry, "ApprovalProcessName")
// + "\") AND (\'13207\' LIKE \"%" + api.getUser() + "%\")"; + "\") AND (\'13207\' LIKE \"%" + api.getUser() + "%\")";
// var queryApprovalProcessName = api.queryFieldsById(qual,
// queryApproval.getFieldIds(), queryApproval.getFormName(), sort, 0, 0);
// log.qualifierLog(queryApproval.getFormName(), qual); var queryApprovalProcessName = api.queryFieldsById(qual,
queryApproval.getFieldIds(), queryApproval.getFormName(), sort, 0, 0);
log.qualifierLog(queryApproval.getFormName(), qual);
// if (!queryApprovalProcessName.isEmpty() && queryApprovalProcessName != null if (!queryApprovalProcessName.isEmpty() && queryApprovalProcessName != null
// && queryApprovalProcessName.size() > 0) && queryApprovalProcessName.size() > 0)
// change.setApproval(true); change.setApproval(true);
// else else
// change.setApproval(false); change.setApproval(false);
// }
if(approval){
change.setApproval(true);
}else{
change.setApproval(false);
} }
change.setChangeNr(getValueStringByID(entry, "ChangeNr")); change.setChangeNr(getValueStringByID(entry, "ChangeNr"));
change.setSupportGroup(getValueStringByID(entry, "SupportGroup")); change.setSupportGroup(getValueStringByID(entry, "SupportGroup"));
change.setStatusReason(getValueStringByID(entry, "StatusReason")); change.setStatusReason(getValueStringByID(entry, "StatusReason"));
if(Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 10 || Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 9){ if (Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1) == 10
if(Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 10){ || Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue)
if(change.getStatusReason().equals("9000")){ .orElse(-1) == 9) {
if (Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue)
.orElse(-1) == 10) {
if (change.getStatusReason().equals("9000")) {
change.setState(10); change.setState(10);
}else{ } else {
change.setState(101); change.setState(101);
} }
} }
if(Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue).orElse(-1)== 9){ if (Optional.ofNullable(getValue(entry, "State")).map(Value::getIntValue)
// System.out.println("\n++++++++"+getValueStringByID(entry, "CurrentStageNumber")); .orElse(-1) == 9) {
if(getValueStringByID(entry, "CurrentStageNumber").equals("1")){ // System.out.println("\n++++++++"+getValueStringByID(entry,
// "CurrentStageNumber"));
if (getValueStringByID(entry, "CurrentStageNumber").equals("1")) {
change.setState(9); change.setState(9);
}else{ } else {
change.setState(91); change.setState(91);
} }
} }
}else{ } else {
change.setState(Optional.ofNullable(getValue(entry, "State")) change.setState(Optional.ofNullable(getValue(entry, "State"))
.map(Value::getIntValue) .map(Value::getIntValue)
.orElse(-1)); .orElse(-1));
} }
// System.out.println("\nStatus: "+change.getState());
change.setPackageInstanceId(getValueStringByID(entry, "PackageInstanceId")); change.setPackageInstanceId(getValueStringByID(entry, "PackageInstanceId"));
change.setResourceName(getValueStringByID(entry, "ResourceName")); change.setResourceName(getValueStringByID(entry, "ResourceName"));
change.setD1(timestampToDateById(entry, "D1")); change.setD1(timestampToDateById(entry, "D1"));
change.setD2(timestampToDateById(entry, "D2")); change.setD2(timestampToDateById(entry, "D2"));
@ -196,21 +188,23 @@ public class Change {
.map(Object::toString) .map(Object::toString)
.filter(peopleFullName::equals) .filter(peopleFullName::equals)
.isPresent()); .isPresent());
// change.setPackageName(queryPackageName(getValueStringByID(entry, "PackageType").toString()));
var ptMinutes = getValueStringByID(entry, "PlanTimeMinutes").isEmpty() ? "00" var ptMinutes = getValueStringByID(entry, "PlanTimeMinutes").isEmpty() ? "00"
: getValueStringByID(entry, "PlanTimeMinutes"); : getValueStringByID(entry, "PlanTimeMinutes");
var ptHours = getValueStringByID(entry, "PlanTimeHours").isEmpty() ? "00" var ptHours = getValueStringByID(entry, "PlanTimeHours").isEmpty() ? "00"
: getValueStringByID(entry, "PlanTimeHours"); : getValueStringByID(entry, "PlanTimeHours");
change.setPlanTime(convertPlanTime(ptHours, ptMinutes)); change.setPlanTime(convertPlanTime(ptHours, ptMinutes));
change.setPackageName(getValueStringByID(entry, "PackageName"));
// change.setPackageName(queryPackageName(getValueStringByID(entry, "PackageType").toString()));
changes.add(change); changes.add(change);
} }
System.out.println("###FERTIG");
System.out.println(entries.size()); System.out.println(entries.size());
api.freeImpersonatedUser(); api.freeImpersonatedUser();
long endTime = System.currentTimeMillis();
long duration = (endTime - startTime);
double durationInSeconds = duration / 1000.0;
System.out.println("\n\nFetching Changes took " + durationInSeconds + " seconds.");
return new ChangeResponse(entriesSize, changes); return new ChangeResponse(entriesSize, changes);
} }
@ -360,12 +354,12 @@ public class Change {
.queryFieldsById("\'InstanceId_Package\' = \"" + packageType + "\"", .queryFieldsById("\'InstanceId_Package\' = \"" + packageType + "\"",
queryPackage.getFieldIds(), queryPackage.getFormName(), null, 0, 0); queryPackage.getFieldIds(), queryPackage.getFormName(), null, 0, 0);
Entry packageName = null; Entry packageName = null;
if (packageNameList != null && !packageNameList.isEmpty()) { if (packageNameList != null && !packageNameList.isEmpty()) {
packageName = packageNameList.get(0); packageName = packageNameList.get(0);
return packageName.get(queryPackage.getFieldId("PackageName")).toString(); return packageName.get(queryPackage.getFieldId("PackageName")).toString();
} }
return ""; return "";
} }