pagination for all and some
parent
2eff488b32
commit
c60be5be71
|
|
@ -86,7 +86,7 @@ public class KalenderRestController {
|
|||
public void getMany() {
|
||||
var query = new Query.QueryBuilder("ASF:WI_CFG_CIMaintenanceRel").addFieldId("something", 666000001).build();
|
||||
try {
|
||||
var entries = javaAPI.queryFieldsById("", query.getFieldIds(), query.getFormName(), null, 0, 2003);
|
||||
var entries = javaAPI.queryFieldsById("", query.getFieldIds(), query.getFormName(), null, 0, 0);
|
||||
System.out.println(entries.size());
|
||||
} catch (ARException e) {
|
||||
// TODO Auto-generated catch block
|
||||
|
|
|
|||
|
|
@ -209,32 +209,66 @@ public class RemedyJavaAPI {
|
|||
} else {
|
||||
sortOrder.add(sorting);
|
||||
}
|
||||
|
||||
// Retrieve entries from the form using the given
|
||||
// qualification.
|
||||
var settingMaxEntries = new int[] { Constants.AR_SERVER_INFO_MAX_ENTRIES };
|
||||
var serverSettings = server.getServerInfo(settingMaxEntries);
|
||||
var maxEntriesNumber = serverSettings.get(Constants.AR_SERVER_INFO_MAX_ENTRIES).getIntValue();
|
||||
|
||||
if (sliceEnd == 0) {
|
||||
return getAllListEntryObjects(qual, formName, sortOrder, fieldIds, nMatches,
|
||||
maxEntriesNumber);
|
||||
}
|
||||
return getSomeListEntryObjects(sliceStart, sliceEnd, qual, formName, sortOrder, fieldIds, nMatches,
|
||||
maxEntriesNumber);
|
||||
}
|
||||
|
||||
private List<Entry> getAllListEntryObjects(QualifierInfo qual, String formName,
|
||||
List<SortInfo> sortOrder, int[] fieldIds, OutputInteger nMatches, int maxEntriesNumber) throws ARException {
|
||||
List<Entry> entries = new ArrayList<Entry>();
|
||||
List<Entry> fetched = new ArrayList<Entry>();
|
||||
var toFetchNumber = maxEntriesNumber;
|
||||
if (sliceEnd != 0) {
|
||||
toFetchNumber = sliceEnd;
|
||||
}
|
||||
var sliceStart = 0;
|
||||
do {
|
||||
fetched = server.getListEntryObjects(
|
||||
formName, qual, sliceStart,
|
||||
sliceEnd,
|
||||
formName, qual, sliceStart, 0,
|
||||
sortOrder, fieldIds, true, nMatches);
|
||||
sliceStart += fetched.size();
|
||||
entries.addAll(fetched);
|
||||
sliceStart = entries.size();
|
||||
if (sliceEnd != 0) {
|
||||
toFetchNumber = toFetchNumber - entries.size();
|
||||
}
|
||||
} while (fetched.size() == toFetchNumber);
|
||||
|
||||
} while (fetched.size() == maxEntriesNumber);
|
||||
|
||||
return entries;
|
||||
}
|
||||
|
||||
private List<Entry> getSomeListEntryObjects(int sliceStart, int sliceEnd, QualifierInfo qual, String formName,
|
||||
List<SortInfo> sortOrder, int[] fieldIds, OutputInteger nMatches, int maxEntriesNumber) throws ARException {
|
||||
List<Entry> entries = new ArrayList<Entry>();
|
||||
List<Entry> fetched = new ArrayList<Entry>();
|
||||
var remainder = sliceEnd % maxEntriesNumber;
|
||||
var loop = sliceEnd / maxEntriesNumber;
|
||||
|
||||
for (int i = 0; i < loop; i++) {
|
||||
fetched = server.getListEntryObjects(
|
||||
formName, qual, sliceStart, 0,
|
||||
sortOrder, fieldIds, true, nMatches);
|
||||
entries.addAll(fetched);
|
||||
sliceStart += fetched.size();
|
||||
}
|
||||
entries.addAll(server.getListEntryObjects(
|
||||
formName, qual, sliceStart, remainder,
|
||||
sortOrder, fieldIds, true, nMatches));
|
||||
|
||||
return entries;
|
||||
}
|
||||
|
||||
public int getFormSize(String qualStr, String formName) throws ARException {
|
||||
List<Field> fields = server.getListFieldObjects(formName);
|
||||
QualifierInfo qual = server.parseQualification(qualStr,
|
||||
fields, null, Constants.AR_QUALCONTEXT_DEFAULT);
|
||||
var statistics = server.getEntryStatistics(server.getForm(formName).getKey(), qual, null,
|
||||
Constants.AR_STAT_OP_COUNT, null);
|
||||
return statistics.get(0).getResult().getIntValue();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ import com.bmc.arsys.api.Timestamp;
|
|||
import com.bmc.arsys.api.Value;
|
||||
import com.nttdata.calender.api.Query;
|
||||
import com.nttdata.calender.api.RemedyJavaAPI;
|
||||
import com.nttdata.calender.changes.query.Filter;
|
||||
|
||||
/**
|
||||
* Class representing the change with all of the change specific attributes.
|
||||
|
|
@ -91,11 +92,14 @@ public class Change {
|
|||
}
|
||||
|
||||
// constructs set of supportGroups and full name of impersonated User
|
||||
Set<String> peopleSupportGroup = peopleInfos.stream()
|
||||
String[] peopleSupportGroup = peopleInfos.stream()
|
||||
.map(entry -> entry.get(queryPerson.getFieldId("SupportGroupId")).toString())
|
||||
.collect(Collectors.toSet());
|
||||
.toArray(String[]::new);
|
||||
var peopleFullName = peopleInfos.get(0).get(queryPerson.getFieldId("FullName")).toString();
|
||||
|
||||
request.addFilter(
|
||||
new Filter("SupportGroupId", "equals", peopleSupportGroup));
|
||||
|
||||
var qualifier = "";
|
||||
if (request.getFilter() != null) {
|
||||
qualifier = request.constructQualifier(queryChange, api);
|
||||
|
|
@ -105,8 +109,8 @@ public class Change {
|
|||
this.queryChange.getFormName(),
|
||||
request.getSort().getSortInfo(queryChange), request.getSliceStart(),
|
||||
request.getSliceEnd());
|
||||
entries.removeIf(entry -> !peopleSupportGroup.contains(getValueStringByID(entry, "SupportGroupId")));
|
||||
|
||||
var entriesSize = api.getFormSize(qualifier, this.queryChange.getFormName());
|
||||
System.out.println(entriesSize);
|
||||
var changes = new ArrayList<ChangeItem>();
|
||||
entries.forEach(entry -> {
|
||||
var change = new ChangeItem(entry.getEntryId());
|
||||
|
|
@ -142,7 +146,7 @@ public class Change {
|
|||
|
||||
api.freeImpersonatedUser();
|
||||
|
||||
return new ChangeResponse(entries.size(), changes);
|
||||
return new ChangeResponse(entriesSize, changes);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
package com.nttdata.calender.changes;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.bmc.arsys.api.ARException;
|
||||
import com.nttdata.calender.api.Query;
|
||||
import com.nttdata.calender.api.RemedyJavaAPI;
|
||||
|
|
@ -14,7 +16,7 @@ import com.nttdata.calender.changes.query.Sort;
|
|||
public class ChangeRequest {
|
||||
private int sliceStart;
|
||||
private int sliceEnd;
|
||||
private Filter[] filter;
|
||||
private ArrayList<Filter> filter;
|
||||
private Sort sort;
|
||||
|
||||
/**
|
||||
|
|
@ -58,7 +60,7 @@ public class ChangeRequest {
|
|||
*
|
||||
* @return an array of {@link Filter} objects representing the filter criteria.
|
||||
*/
|
||||
public Filter[] getFilter() {
|
||||
public ArrayList<Filter> getFilter() {
|
||||
return this.filter;
|
||||
}
|
||||
|
||||
|
|
@ -68,7 +70,7 @@ public class ChangeRequest {
|
|||
* @param filter an array of {@link Filter} objects representing the filter
|
||||
* criteria.
|
||||
*/
|
||||
public void setFilter(Filter[] filter) {
|
||||
public void setFilter(ArrayList<Filter> filter) {
|
||||
this.filter = filter;
|
||||
}
|
||||
|
||||
|
|
@ -90,6 +92,13 @@ public class ChangeRequest {
|
|||
this.sort = sort;
|
||||
}
|
||||
|
||||
public void addFilter(Filter filter) {
|
||||
if (this.filter == null) {
|
||||
this.filter = new ArrayList<Filter>();
|
||||
}
|
||||
this.filter.add(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a qualifier based on the filters defined in the object and the
|
||||
* given Query object.
|
||||
|
|
@ -105,14 +114,14 @@ public class ChangeRequest {
|
|||
public String constructQualifier(Query query, RemedyJavaAPI api) throws ARException {
|
||||
var qualifier = "";
|
||||
|
||||
for (int i = 0; i < this.filter.length; i++) {
|
||||
var column = this.filter[i].getColumn();
|
||||
for (int i = 0; i < this.filter.size(); i++) {
|
||||
var column = this.filter.get(i).getColumn();
|
||||
if (!column.isEmpty()) {
|
||||
var inner_qualifier = "";
|
||||
|
||||
if (column.equals("D2")) {
|
||||
var startFrom = filter[i].getCriteria()[0];
|
||||
var startTo = filter[i].getCriteria()[1];
|
||||
var startFrom = filter.get(i).getCriteria()[0];
|
||||
var startTo = filter.get(i).getCriteria()[1];
|
||||
if (!startFrom.isEmpty() && !startTo.isEmpty()) {
|
||||
var dateColumn = api.getFieldDatabaseName(query.getFormName(), query.getFieldId(column));
|
||||
|
||||
|
|
@ -132,11 +141,11 @@ public class ChangeRequest {
|
|||
column = api.getFieldDatabaseName(query.getFormName(), query.getFieldId(column));
|
||||
|
||||
var inner_filter = "\'" + column + "\' ";
|
||||
var criterias = filter[i].getCriteria();
|
||||
var criterias = filter.get(i).getCriteria();
|
||||
var inner_concat = " OR ";
|
||||
var inner_criteria_prefix = "";
|
||||
|
||||
switch (filter[i].getFilter()) {
|
||||
switch (filter.get(i).getFilter()) {
|
||||
case "equals":
|
||||
inner_filter += "= ";
|
||||
break;
|
||||
|
|
@ -158,7 +167,7 @@ public class ChangeRequest {
|
|||
}
|
||||
|
||||
qualifier += "(" + inner_qualifier + ")";
|
||||
if (i < filter.length - 1) {
|
||||
if (i < filter.size() - 1) {
|
||||
qualifier += " AND ";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
package com.nttdata.calender.changes.query;
|
||||
|
||||
import com.nttdata.calender.changes.Change;
|
||||
|
||||
/**
|
||||
|
|
@ -9,6 +10,12 @@ public class Filter {
|
|||
private String filter;
|
||||
private String[] criteria;
|
||||
|
||||
public Filter(String column, String filter, String[] criteria) {
|
||||
this.column = column;
|
||||
this.filter = filter;
|
||||
this.criteria = criteria;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns column of {@link Filter}
|
||||
*
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<Configuration status="info">
|
||||
<Appenders>
|
||||
<RollingFile name="application"
|
||||
fileName="./backend/log/application.log" filePattern="log/application-%d{yyyy-MM-dd-HH-mm}-%i.log">
|
||||
fileName="./backend/log/application.log" filePattern="application-%d{yyyy-MM-dd-HH-mm}-%i.log">
|
||||
<PatternLayout>
|
||||
<Pattern>%d{yyyy-MM-dd-HH:mm:ss} %-5p %m%n%ex{full}</Pattern>
|
||||
</PatternLayout>
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
</Policies>
|
||||
</RollingFile>
|
||||
<RollingFile name="error"
|
||||
fileName="./backend/log/error.log" filePattern="log/error-%d{yyyy-MM-dd-HH-mm}-%i.log">
|
||||
fileName="./backend/log/error.log" filePattern="error-%d{yyyy-MM-dd-HH-mm}-%i.log">
|
||||
<PatternLayout>
|
||||
<Pattern>%d{yyyy-MM-dd-HH:mm:ss} %-5p %m%n%ex{full}</Pattern>
|
||||
</PatternLayout>
|
||||
|
|
@ -20,7 +20,7 @@
|
|||
</Policies>
|
||||
</RollingFile>
|
||||
<RollingFile name="warn"
|
||||
fileName="./backend/log/warn.log" filePattern="log/warn-%d{yyyy-MM-dd-HH-mm}-%i.log">
|
||||
fileName="./backend/log/warn.log" filePattern="warn-%d{yyyy-MM-dd-HH-mm}-%i.log">
|
||||
<PatternLayout>
|
||||
<Pattern>%d{yyyy-MM-dd-HH:mm:ss} %-5p %m%n</Pattern>
|
||||
</PatternLayout>
|
||||
|
|
|
|||
Loading…
Reference in New Issue