ChangeCalendar/backend/src/main/java/com/nttdata/calender/presets/Presets.java

200 lines
10 KiB
Java

package com.nttdata.calender.presets;
import java.util.ArrayList;
import java.util.List;
import com.bmc.arsys.api.ARException;
import com.bmc.arsys.api.Value;
import com.bmc.thirdparty.org.springframework.beans.factory.annotation.Autowired;
import com.nttdata.calender.api.Query;
import com.nttdata.calender.api.RemedyJavaAPI;
import com.nttdata.calender.errorhandling.ErrorTypes.NotFoundError;
public class Presets {
private final static String formName = "ASF:CHG_CAL_UserPreferencesJoinFilterDefinitions";
private final static String formDefault = "ASF:CHG_CAL_FilterDefinitions";
private final static String formUserPref = "ASF:CHG_CAL_UserPreferences";
private Query query;
private Query defQuery;
private Query prefQuery;
private RemedyJavaAPI api;
private List<Preset> presets;
@Autowired
public Presets(RemedyJavaAPI api) throws ARException, NotFoundError {
this.api = api;
this.query = new Query.QueryBuilder(formName)
.addFieldId("RequestId", 6)
.addFieldId("InstanceId", 179)
.addFieldId("Status", 7)
.addFieldId("GUID", 364000001) // current active preset
.addFieldId("Details", 364000002)
.addFieldId("View", 364000003)
.addFieldId("Language", 364000004)
.addFieldId("Submitter", 2)
.addFieldId("Name", 364200001)
.addFieldId("Definition", 364200002)
.build();
this.defQuery = new Query.QueryBuilder(formDefault)
.addFieldId("Name", 364000001)
.addFieldId("Definition", 364000002)
.addFieldId("isSystemDefault", 364000004)
.addFieldId("isGlobal", 364000003)
.addFieldId("InstanceId", 179)
.build();
this.prefQuery = new Query.QueryBuilder(formUserPref)
.addFieldId("GUID", 364000001)
.addFieldId("Details", 364000002)
.addFieldId("View", 364000003)
.addFieldId("Language", 364000004)
.build();
this.presets = new ArrayList<>();
api.impersonateUser("ext_StanzPa");
}
public Object initPresets() throws ARException, NotFoundError {
PresetsGetResponse response = new PresetsGetResponse();
// SYSTEMDEFAULT
var sysdef = api.queryFieldsById("\'364000001\'==\"Systemdefault\"", defQuery.getFieldIds(), formDefault, null, 0, 0).get(0);
String sysdefGUID = sysdef.get(defQuery.getFieldId("InstanceId")).toString();
// CHECK IF USER HAS PREFERENCES
var preference = api.queryFieldsById("\'2\'==\""+ api.getUser() +"\"", prefQuery.getFieldIds(), formUserPref, null, 0, 0);
if (preference != null && !preference.isEmpty()) {
// CHECK IF PREFERENCE HAS GUID
var guid = preference.get(0).get(prefQuery.getFieldId("GUID"));
if (guid.toString() == null) {
// IF GUID IS NULL PUT SYSTEM DEFAULT INSIDE
System.out.println("GEHT REIN");
var queryPreferenceNewValue = new Query.QueryBuilder(formUserPref).addFieldValue("GUID", 364000001, new Value(sysdefGUID)).build();
var pref = api.queryFieldsById("\'2\'==\""+ api.getUser() +"\"", queryPreferenceNewValue.getFieldIds(), formUserPref, null, 0, 0);
api.modifyEntry(pref.get(0).getEntryId(), queryPreferenceNewValue);
}
} else {
// IF USER HAS NO PREFERENCES CREATE NEW ENTRY WITH PREFERENCES AND SYSDEF GUID
createUserPreference(sysdefGUID);
}
preference = api.queryFieldsById("\'2\'==\""+ api.getUser() +"\"", prefQuery.getFieldIds(), formUserPref, null, 0, 0);
// INIT ALL PRESETS
getAll();
response.setPresets(this.presets);
response.setSelectedPreset(preference.get(0).get(prefQuery.getFieldId("GUID")).toString());
response.setUserPreferences(
new UserPreferences(preference.get(0).get(prefQuery.getFieldId("Details")).toString(),
preference.get(0).get(prefQuery.getFieldId("View")).toString(),
preference.get(0).get(prefQuery.getFieldId("Language")).toString()));
return response;
}
public void createUserPreference(String guid) throws ARException {
var savePreference = new Query.QueryBuilder(formUserPref)
.addFieldValue("GUID", 364000001, new Value(guid))
.addFieldValue("Details", 364000002, new Value(1))
.addFieldValue("View", 364000003, new Value(1))
.addFieldValue("Language", 364000004, new Value("DE"))
.build();
api.createEntry(savePreference);
}
public void savePreset(Preset request) throws ARException, NotFoundError {
var saveQuery = new Query.QueryBuilder(formDefault)
.addFieldValue("FilterPresetName", 364000001, new Value(request.getName()))
.addFieldValue("FilterPresetDefinition", 364000002, new Value(request.getDefinition()))
.build();
api.createEntry(saveQuery);
}
public boolean selectPreset(SelectPresetRequest guid) throws ARException {
var queryP = new Query.QueryBuilder(formUserPref)
.addFieldValue("GUID", 364000001, new Value(guid.getGuid())).build();
var pref = api.queryFieldsById("\'2\'==\""+ api.getUser() +"\"", queryP.getFieldIds(), formUserPref,
null, 0,
0);
if (pref.isEmpty() || pref == null)
return false;
api.modifyEntry(pref.get(0).getEntryId(), queryP);
return true;
}
public void updatePreset(UpdatePresetRequest request) throws ARException {
var queryPresets = new Query.QueryBuilder(formDefault)
.addFieldValue("Definition", 364000002, new Value(request.getDefinition())).build();
var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"",
queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0);
api.modifyEntry(preset.getEntryId(), queryPresets);
}
public void renamePreset(RenamePresetRequest request) throws ARException {
var queryPresets = new Query.QueryBuilder(formDefault)
.addFieldValue("Name", 364000001, new Value(request.getNewName())).build();
var preset = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"",
queryPresets.getFieldIds(), formDefault, null, 0, 0).get(0);
api.modifyEntry(preset.getEntryId(), queryPresets);
}
public String editUserPreferences(EditUserPreferencesRequest request) throws ARException {
var queryUserPreferences = new Query.QueryBuilder(formUserPref)
.addFieldValue("Details", 364000002, new Value(request.getDetails()))
.addFieldValue("View", 364000003, new Value(request.getView()))
.addFieldValue("Language", 364000004, new Value(request.getLanguage()))
.build();
var preferences = api.queryFieldsById("\'2\'==\""+ api.getUser() +"\"", queryUserPreferences.getFieldIds(),
formUserPref, null, 0, 0).get(0);
// bei falschen input parameter
if (preferences.isEmpty() || preferences == null)
return "Error";
api.modifyEntry(preferences.getEntryId(), queryUserPreferences);
return "Success";
}
public void allPresets() throws ARException, NotFoundError {
var entries = api.queryFieldsById("\'2\'==\"" + api.getUser() + "\"", defQuery.getFieldIds(),
formDefault,
null, 0,
0);
if (entries.isEmpty() || entries == null) {
throw new NotFoundError("No presets found in this context");
} else {
for (var v : entries) {
presets.add(new Preset(v.get(defQuery.getFieldId("InstanceId")).toString(),
v.get(defQuery.getFieldId("Name")).toString(),
v.get(defQuery.getFieldId("Definition")).toString(),
""));
}
}
}
public void deletePreset(DeletePresetRequest request) throws ARException {
var entries = api.queryFieldsById("\'179\'==\"" + request.getId() + "\"", null, formDefault, null, 0, 0)
.get(0);
api.deleteEntry(formDefault, entries.getEntryId());
}
public List<Preset> getAll() throws NotFoundError, ARException {
allPresets();
return this.presets;
}
}