Commit 9c2feb4b authored by Valentin Suhnjov's avatar Valentin Suhnjov

RIHAKB-149. Remove excessive validation and kind_id foreing key

parent 10652210
alter table riha.main_resource add CONSTRAINT fk_kind FOREIGN KEY (kind_id)
REFERENCES riha.kind (kind_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION;
alter table riha.main_resource add CONSTRAINT fk_main_resource_main_resource_02 FOREIGN KEY (main_resource_template_id)
REFERENCES riha.main_resource (main_resource_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION;
......
......@@ -99,11 +99,11 @@ GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE riha.kind TO riha;
CREATE TABLE riha.main_resource
(
main_resource_id integer NOT NULL, -- Ressursi unikaalne ID. Iga uus versioon saab uue ID. Kõige väiksema ID-ga ressurss on hetkel aktuaalne
uri character varying(150) NOT NULL, -- Ressursi unikaalne URI. Sellega määratakse millised on samad aga erineva versiooniga ressursid ressursside tabelis
name character varying(190) NOT NULL, -- Ressursi nimetus
owner character varying(150) NOT NULL, -- Ressursi omanik. Tavapäraselt ettevõtte registrikood. Infosüsteemi mõttes vastutav isik.
uri character varying(150), -- Ressursi unikaalne URI. Sellega määratakse millised on samad aga erineva versiooniga ressursid ressursside tabelis
name character varying(190), -- Ressursi nimetus
owner character varying(150), -- Ressursi omanik. Tavapäraselt ettevõtte registrikood. Infosüsteemi mõttes vastutav isik.
short_name character varying(50), -- Ressursi lühinimetus
version character varying(10) NOT NULL, -- Inimloetav versiooni nimi. See ei ühti infosüsteemi versiooni nimetusega
version character varying(10), -- Inimloetav versiooni nimi. See ei ühti infosüsteemi versiooni nimetusega
json_content jsonb, -- Ressursi kirjelduse täisinfo esitatuna json struktuurina (sisaldab ka eraldi väljadena toodud andmed).
parent_uri character varying(150), -- Hierarhilise ressursi puhul on siin näidatud vanema URI
main_resource_parent_id integer, -- Hierarhilise ressursi puhul on siin näidatud vanema ID
......@@ -112,18 +112,15 @@ CREATE TABLE riha.main_resource
state character(1), -- Ressursi olek (C-current, O-old, T-temporary, D-deleted jms.) Vaikimisi 'C'.
start_date timestamp without time zone, -- Käesoleva versiooni kehtivuse algus
end_date timestamp without time zone, -- Käesoleva versiooni kehtivuse lõpp
creator character varying(150) NOT NULL, -- Kirje loonud isiku isikukood või muu identifikaator
creator character varying(150), -- Kirje loonud isiku isikukood või muu identifikaator
modifier character varying(150), -- Viimati kirjet muutnud isiku isikukood või muu identifikaator
creation_date timestamp without time zone NOT NULL, -- Kirje loomise ajahetk.
creation_date timestamp without time zone, -- Kirje loomise ajahetk.
modified_date timestamp without time zone, -- Kirje viimati muutmise ajahetk.
old_id integer,
field_name character varying(150),
kind_id integer, -- Ressursi liik (infosystem, classifier, service, dictionary, xmlresource vms.).
main_resource_template_id integer,
CONSTRAINT pk_main_resource PRIMARY KEY (main_resource_id),
CONSTRAINT fk_kind FOREIGN KEY (kind_id)
REFERENCES riha.kind (kind_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk_main_resource_main_resource_02 FOREIGN KEY (main_resource_template_id)
REFERENCES riha.main_resource (main_resource_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
......
alter table riha.main_resource drop constraint fk_kind;
alter table riha.main_resource drop constraint fk_main_resource_main_resource_02;
alter table riha.data_object drop constraint fk_data_object_data_object;
alter table riha.data_object drop constraint fk_data_object_kind;
......
......@@ -405,7 +405,6 @@ public class ChangeLogic<T, K> {
T item = (T) parseDate.getResult();
FileHelper.writeDocumentContentToFile(item);
// List<K> createdKey = genericDAO.create(item);
Validator.infosystemMustHaveFields(item, kindRepository);
List<K> createdKey = secureDAO.create(item);
createdKeys.add(createdKey.get(0));
} catch (Exception e) {
......@@ -444,7 +443,6 @@ public class ChangeLogic<T, K> {
try {
FileHelper.writeDocumentContentToFile(item);
Validator.infosystemMustHaveFields(item, kindRepository);
// createdKeys = genericDAO.create(item);
createdKeys = secureDAO.create(item);
......
......@@ -136,41 +136,9 @@ public class TableEntryCreateLogic<T> {
// expect json_content
JsonObject jsonContent = JsonHelper.getFromJson(json);
String[] reqPars = {"kind_id" };
List<String> missingRequiredPars = collectMissingProperties(reqPars, jsonContent);
if (missingRequiredPars.size() > 0) {
// First we try to find kind_d based by kind parameter, if this exists:
if (jsonContent.has("kind")) {
String name = jsonContent.get("kind").getAsString();
Kind kind = kindRepository.getByName(name);
if (kind == null) {
throw new IllegalArgumentException("No kind exists with name: " + name);
}
jsonContent.addProperty("kind_id", kind.getKind_id());
// don't save kind to database (will be removed from table soon)
jsonContent.add("kind", JsonNull.INSTANCE);
} else {
return (T) requiredParsMissing(missingRequiredPars, json);
}
}
Integer pkId = utilitiesDAO.getNextSeqValForPKForTable(classRepresentingTable);
if (!jsonContent.has("uri") || jsonContent.get("uri").isJsonNull()) {
int kindId = jsonContent.get("kind_id").getAsInt();
Kind kind = kindRepository.getById(kindId);
if (kind == null) {
throw new IllegalArgumentException("No kind exists with kind_id: " + kindId);
}
String kindName = kind.getName();
String generatedUri = URI.constructUri(kindName, pkId);
// jsonContent must also contain uri
jsonContent.addProperty("uri", generatedUri);
}
return fromJsonToObjHelper(jsonContent, pkId, classRepresentingTable);
}
/**
......
......@@ -415,23 +415,6 @@ public class Validator extends Exception {
}
}
/**
* Main_resource of kind "infosystem" has special fields that must not be null.
*
* @param item
* @throws RihaRestException
*/
public static <T> void infosystemMustHaveFields(T item, KindRepository kindRepository) throws RihaRestException {
if (item.getClass() == Main_resource.class) {
Main_resource mr = (Main_resource) item;
Kind kind = kindRepository.getById(mr.getKind_id());
if (kind.getName().equals(Finals.INFOSYSTEM)) {
String[] reqPars = {"short_name", "infosystem_status"};
cantHaveMissingReqParsInJson(reqPars, mr.getJson_content().toString());
}
}
}
/**
* Document must exist.
*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment