working on editing GUI
This commit is contained in:
parent
e180a94b6b
commit
79389cbbcd
|
@ -24,6 +24,7 @@ import org.gcube.informationsystem.service.dto.FacetPropGui;
|
||||||
import org.gcube.informationsystem.service.dto.FacetPropertyDTO;
|
import org.gcube.informationsystem.service.dto.FacetPropertyDTO;
|
||||||
import org.gcube.informationsystem.service.dto.FacetSpecDTO;
|
import org.gcube.informationsystem.service.dto.FacetSpecDTO;
|
||||||
import org.gcube.informationsystem.service.dto.FacetTypeDTO;
|
import org.gcube.informationsystem.service.dto.FacetTypeDTO;
|
||||||
|
import org.gcube.informationsystem.service.dto.ResourceImplFieldsDTO;
|
||||||
import org.gcube.informationsystem.service.dto.ResourceTypeDTO;
|
import org.gcube.informationsystem.service.dto.ResourceTypeDTO;
|
||||||
import org.gcube.informationsystem.service.dto.ValidationObjDTO;
|
import org.gcube.informationsystem.service.dto.ValidationObjDTO;
|
||||||
import org.gcube.informationsystem.tree.Tree;
|
import org.gcube.informationsystem.tree.Tree;
|
||||||
|
@ -106,6 +107,8 @@ public class InformationSystemService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public FacetSpecDTO getFacetSpecification(String facetName) throws Exception {
|
public FacetSpecDTO getFacetSpecification(String facetName) throws Exception {
|
||||||
|
|
||||||
String currentCtx = SecretManagerProvider.instance.get().getContext();
|
String currentCtx = SecretManagerProvider.instance.get().getContext();
|
||||||
|
@ -142,6 +145,16 @@ public class InformationSystemService {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public String getResource(String type, String uid) throws Exception {
|
||||||
|
String raw = "";
|
||||||
|
String currentCtx = SecretManagerProvider.instance.get().getContext();
|
||||||
|
ResourceRegistryClient resourceRegistryClient= ResourceRegistryClientFactory.create(currentCtx);
|
||||||
|
resourceRegistryClient.setIncludeMeta(false);
|
||||||
|
UUID coso = UUID.fromString(uid);
|
||||||
|
raw = resourceRegistryClient.getInstance(type, coso);
|
||||||
|
return raw;
|
||||||
|
}
|
||||||
|
|
||||||
private FacetPropGui toFacetPropGui(FacetPropertyDTO fp, ResourceRegistryClient client) {
|
private FacetPropGui toFacetPropGui(FacetPropertyDTO fp, ResourceRegistryClient client) {
|
||||||
FacetPropGui prop = new FacetPropGui();
|
FacetPropGui prop = new FacetPropGui();
|
||||||
prop.setPropDescription(fp.getDescription());
|
prop.setPropDescription(fp.getDescription());
|
||||||
|
@ -387,15 +400,6 @@ public class InformationSystemService {
|
||||||
/*
|
/*
|
||||||
* Fetches the instance of a certain type for a given UUID
|
* Fetches the instance of a certain type for a given UUID
|
||||||
*/
|
*/
|
||||||
public String getResource(String type, String uid) throws Exception {
|
|
||||||
String raw = "";
|
|
||||||
String currentCtx = SecretManagerProvider.instance.get().getContext();
|
|
||||||
ResourceRegistryClient resourceRegistryClient= ResourceRegistryClientFactory.create(currentCtx);
|
|
||||||
resourceRegistryClient.setIncludeMeta(false);
|
|
||||||
UUID coso = UUID.fromString(uid);
|
|
||||||
raw = resourceRegistryClient.getInstance(type, coso);
|
|
||||||
return raw;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -18,6 +18,8 @@ import org.gcube.common.authorization.utils.manager.SecretManagerProvider;
|
||||||
import org.gcube.informationsystem.base.reference.AccessType;
|
import org.gcube.informationsystem.base.reference.AccessType;
|
||||||
import org.gcube.informationsystem.config.TokenManager;
|
import org.gcube.informationsystem.config.TokenManager;
|
||||||
import org.gcube.informationsystem.model.reference.entities.Resource;
|
import org.gcube.informationsystem.model.reference.entities.Resource;
|
||||||
|
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClient;
|
||||||
|
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClientFactory;
|
||||||
import org.gcube.informationsystem.resourceregistry.publisher.ResourceRegistryPublisher;
|
import org.gcube.informationsystem.resourceregistry.publisher.ResourceRegistryPublisher;
|
||||||
import org.gcube.informationsystem.resourceregistry.publisher.ResourceRegistryPublisherFactory;
|
import org.gcube.informationsystem.resourceregistry.publisher.ResourceRegistryPublisherFactory;
|
||||||
import org.gcube.informationsystem.serialization.ElementMapper;
|
import org.gcube.informationsystem.serialization.ElementMapper;
|
||||||
|
@ -26,7 +28,12 @@ import org.gcube.informationsystem.service.dto.ContextDTO;
|
||||||
import org.gcube.informationsystem.service.dto.FacetSpecDTO;
|
import org.gcube.informationsystem.service.dto.FacetSpecDTO;
|
||||||
import org.gcube.informationsystem.service.dto.FacetTypeDTO;
|
import org.gcube.informationsystem.service.dto.FacetTypeDTO;
|
||||||
import org.gcube.informationsystem.service.dto.ResourceBuilderDTO;
|
import org.gcube.informationsystem.service.dto.ResourceBuilderDTO;
|
||||||
|
import org.gcube.informationsystem.service.dto.ResourceImplFieldsDTO;
|
||||||
import org.gcube.informationsystem.service.dto.ResourceTypeDTO;
|
import org.gcube.informationsystem.service.dto.ResourceTypeDTO;
|
||||||
|
import org.gcube.informationsystem.types.TypeMapper;
|
||||||
|
import org.gcube.informationsystem.types.reference.Type;
|
||||||
|
import org.gcube.informationsystem.types.reference.entities.FacetType;
|
||||||
|
import org.gcube.informationsystem.types.reference.properties.PropertyDefinition;
|
||||||
import org.gcube.informationsystem.utils.UUIDUtility;
|
import org.gcube.informationsystem.utils.UUIDUtility;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
@ -40,7 +47,10 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
import org.springframework.web.util.UriUtils;
|
import org.springframework.web.util.UriUtils;
|
||||||
|
|
||||||
|
import com.jayway.jsonpath.JsonPath;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import net.minidev.json.JSONArray;
|
||||||
import tech.jhipster.web.util.HeaderUtil;
|
import tech.jhipster.web.util.HeaderUtil;
|
||||||
|
|
||||||
|
|
||||||
|
@ -168,6 +178,7 @@ public class InformationSystemResource{
|
||||||
return ResponseEntity.ok().body(sc);
|
return ResponseEntity.ok().body(sc);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
//e.printStackTrace();
|
//e.printStackTrace();
|
||||||
|
|
||||||
log.error("****ERROR*************");
|
log.error("****ERROR*************");
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
return ResponseEntity.noContent()
|
return ResponseEntity.noContent()
|
||||||
|
@ -175,7 +186,63 @@ public class InformationSystemResource{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Ritorna il raw json spacchettato in oggetti buoni per la rappresentazione nella GUI
|
||||||
|
*/
|
||||||
|
@GetMapping("/facetfields")
|
||||||
|
public ResponseEntity<String> resourceInstanceMapped(@RequestParam @Nullable String currentContext, @RequestParam String resourceType, @RequestParam String uid) {
|
||||||
|
log.debug("Request facets fields");
|
||||||
|
ArrayList<ResourceImplFieldsDTO> facetFields = new ArrayList<ResourceImplFieldsDTO>();
|
||||||
|
ArrayList<String> facetRelations = new ArrayList<>();
|
||||||
|
ArrayList<String> facetNames = new ArrayList<>();
|
||||||
|
ArrayList<JSONArray> extraProps = new ArrayList<JSONArray>();
|
||||||
|
try {
|
||||||
|
String currentCtx = SecretManagerProvider.instance.get().getContext();
|
||||||
|
ResourceRegistryClient resourceRegistryClient= ResourceRegistryClientFactory.create(currentCtx);
|
||||||
|
informationSystemService.setUma(createUmaToken(currentContext));
|
||||||
|
String rawJson = informationSystemService.getResource(resourceType, uid);
|
||||||
|
//TODO: qui spacchetta con Jsonpath
|
||||||
|
//String sc = rawJson;
|
||||||
|
facetRelations = JsonPath.parse(rawJson).read("$..consistsOf.*.type");
|
||||||
|
facetNames = JsonPath.parse(rawJson).read("$..consistsOf.*.target.type");
|
||||||
|
|
||||||
|
// ArrayList<String> mapKeys = new ArrayList<String>();
|
||||||
|
for(int i=0; i<facetNames.size(); i++) {
|
||||||
|
Map<String, Object> targetObj = JsonPath.parse(rawJson).read("$.consistsOf.["+i+"].target");
|
||||||
|
String fName = facetNames.get(i);
|
||||||
|
ResourceImplFieldsDTO rif = new ResourceImplFieldsDTO();
|
||||||
|
rif.setFrname(fName+"_"+facetRelations.get(i));
|
||||||
|
Map<String, String> facetProps = new HashMap<>();
|
||||||
|
String jsonFacetDesc = resourceRegistryClient.getType(fName, true);
|
||||||
|
Type type = TypeMapper.deserializeTypeDefinitions(jsonFacetDesc).get(0); //only one result
|
||||||
|
FacetType ft = (FacetType) type;
|
||||||
|
if(ft.getProperties()!=null ) {
|
||||||
|
for(PropertyDefinition pd:ft.getProperties() ) {
|
||||||
|
try {
|
||||||
|
String propName = pd.getName();
|
||||||
|
String propValue = "";
|
||||||
|
if(targetObj.get(propName)!=null) {
|
||||||
|
propValue = targetObj.get(propName).toString();
|
||||||
|
}
|
||||||
|
facetProps.put(propName, propValue);
|
||||||
|
}catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rif.setProperties(facetProps);
|
||||||
|
facetFields.add(rif);
|
||||||
|
}
|
||||||
|
ObjectMapper om = new ObjectMapper();
|
||||||
|
String json = om.writeValueAsString(facetFields);
|
||||||
|
return ResponseEntity.ok().body(json);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("****ERROR*************");
|
||||||
|
log.error(e.getLocalizedMessage(), e);
|
||||||
|
return ResponseEntity.noContent()
|
||||||
|
.headers(HeaderUtil.createAlert(applicationName, e.getLocalizedMessage(), "")).build();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("/resourcetypejson")
|
@GetMapping("/resourcetypejson")
|
||||||
|
@ -212,6 +279,8 @@ public class InformationSystemResource{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* returns all the instances of resources given a certain type
|
* returns all the instances of resources given a certain type
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -2,73 +2,116 @@ package org.gcube.informationsystem.web.rest;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.databind.JsonNode;
|
import org.gcube.common.authorization.utils.manager.SecretManagerProvider;
|
||||||
|
import org.gcube.informationsystem.resourceregistry.api.exceptions.ResourceRegistryException;
|
||||||
|
import org.gcube.informationsystem.resourceregistry.api.exceptions.types.SchemaNotFoundException;
|
||||||
|
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClient;
|
||||||
|
import org.gcube.informationsystem.resourceregistry.client.ResourceRegistryClientFactory;
|
||||||
|
import org.gcube.informationsystem.service.dto.FacetPropGui;
|
||||||
|
import org.gcube.informationsystem.service.dto.FacetPropertyDTO;
|
||||||
|
import org.gcube.informationsystem.service.dto.FacetSpecDTO;
|
||||||
|
import org.gcube.informationsystem.service.dto.ResourceImplFieldsDTO;
|
||||||
|
import org.gcube.informationsystem.types.TypeMapper;
|
||||||
|
import org.gcube.informationsystem.types.reference.Type;
|
||||||
|
import org.gcube.informationsystem.types.reference.entities.FacetType;
|
||||||
|
import org.gcube.informationsystem.types.reference.properties.PropertyDefinition;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.google.gson.JsonElement;
|
||||||
|
import com.google.gson.JsonParser;
|
||||||
|
import com.jayway.jsonpath.DocumentContext;
|
||||||
|
import com.jayway.jsonpath.JsonPath;
|
||||||
|
import net.minidev.json.JSONArray;
|
||||||
|
|
||||||
|
|
||||||
public class ProveVarie2 {
|
public class ProveVarie2 {
|
||||||
/*
|
|
||||||
* {
|
static ArrayList<String> facetRelations = new ArrayList<>();
|
||||||
---"type" : "ConsistsOf",
|
static ArrayList<String> facetNames = new ArrayList<>();
|
||||||
"target" : {
|
static ArrayList<JSONArray> extraProps = new ArrayList<JSONArray>();
|
||||||
"authorization":{
|
|
||||||
"schema" : "myname",
|
|
||||||
"value" : "mypassword",
|
|
||||||
"type" : "ValueSchema"
|
static JSONArray props = new JSONArray();
|
||||||
},
|
|
||||||
"protocol" : "proto",
|
|
||||||
"endpoint" : "eeeeeee",
|
|
||||||
"entryName" : "een",
|
|
||||||
"description" : "dede",
|
|
||||||
"type" : "AccessPointFacet"
|
|
||||||
}*/
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
ResourceDescription rd = new ResourceDescription();
|
|
||||||
rd.setType("EService");
|
|
||||||
//
|
|
||||||
ArrayList<FacetDescription> arrFd = new ArrayList<FacetDescription>();
|
|
||||||
FacetDescription fd1 = new FacetDescription();
|
|
||||||
fd1.setType("ConsistsOf");
|
|
||||||
|
|
||||||
Map<String,Object> targetMap = new HashMap<String,Object>();
|
|
||||||
targetMap.put("protocol","proto");
|
|
||||||
targetMap.put("endpoint","https://pippo.topolino.eeeeeee");
|
|
||||||
targetMap.put("entryName","een");
|
|
||||||
targetMap.put("description","dede");
|
|
||||||
targetMap.put("type","AccessPointFacet");
|
|
||||||
TypeProperty tp = new TypeProperty();
|
|
||||||
tp.setType("ValueSchema");
|
|
||||||
tp.setSchema("myschema");
|
|
||||||
tp.setValue("myvalue");
|
|
||||||
targetMap.put("authorization", tp);
|
|
||||||
|
|
||||||
fd1.setTarget(targetMap);
|
|
||||||
arrFd.add(fd1);
|
|
||||||
rd.setConsistsOf(arrFd);
|
|
||||||
try {
|
try {
|
||||||
// create object mapper instance
|
ResourceImplFieldsDTO rd = buildFormFields(realData);
|
||||||
ObjectMapper mapper = new ObjectMapper();
|
// System.out.println(Json.pretty(rd));
|
||||||
// convert user object to `JsonNode`
|
// JsonElement je= JsonParser.parseString(realData);
|
||||||
JsonNode node = mapper.valueToTree(rd);
|
// System.out.println(je);
|
||||||
System.out.println(node.toPrettyString());
|
|
||||||
|
|
||||||
}catch(Exception e) {
|
}catch(Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public FacetSpecDTO getFacetSpecification2(String facetName) throws Exception {
|
||||||
|
|
||||||
|
String currentCtx = SecretManagerProvider.instance.get().getContext();
|
||||||
|
ResourceRegistryClient resourceRegistryClient= ResourceRegistryClientFactory.create(currentCtx);
|
||||||
|
String jsonResult = resourceRegistryClient.getType(facetName, true);
|
||||||
//rd.setIsRelatedTo(new ArrayList<ExtraPropertyString>());
|
Type type = TypeMapper.deserializeTypeDefinitions(jsonResult).get(0); //only one result
|
||||||
|
FacetSpecDTO fsdto = new FacetSpecDTO();
|
||||||
|
ArrayList<FacetPropGui> propsGui = new ArrayList<FacetPropGui>();
|
||||||
|
FacetType ft = (FacetType) type;
|
||||||
|
if(ft.getProperties()!=null ) {
|
||||||
|
for(PropertyDefinition pd:ft.getProperties() ) {
|
||||||
|
try {
|
||||||
|
FacetPropertyDTO prop = new FacetPropertyDTO();
|
||||||
|
prop.setName(pd.getName());
|
||||||
|
}catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fsdto.setGuiProps(propsGui);
|
||||||
|
return fsdto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static ResourceImplFieldsDTO buildFormFields(String resData) {
|
||||||
|
|
||||||
|
ArrayList<ResourceImplFieldsDTO> facetFields = new ArrayList<ResourceImplFieldsDTO>();
|
||||||
|
facetRelations = JsonPath.parse(realData).read("$..consistsOf.*.type");
|
||||||
|
facetNames = JsonPath.parse(realData).read("$..consistsOf.*.target.type");
|
||||||
|
Map<String, Object> targetObj = JsonPath.parse(realData).read("$.consistsOf.[0].target");
|
||||||
|
String gruppo = targetObj.get("group").toString();
|
||||||
|
//ArrayList<ResourceImplFieldsDTO> facetFields = new ArrayList<ResourceImplFieldsDTO>();
|
||||||
|
ResourceImplFieldsDTO rf1 = new ResourceImplFieldsDTO();
|
||||||
|
rf1.setFrname("cname1");
|
||||||
|
Map<String, String> props1 = new HashMap<>();
|
||||||
|
props1.put("campo11", "valore11");
|
||||||
|
props1.put("campo12", "valore12");
|
||||||
|
rf1.setProperties(props1);
|
||||||
|
facetFields.add(rf1);
|
||||||
|
ResourceImplFieldsDTO rf2 = new ResourceImplFieldsDTO();
|
||||||
|
rf2.setFrname("cname2");
|
||||||
|
Map<String, String> props2 = new HashMap<>();
|
||||||
|
props2.put("campo21", "valore21");
|
||||||
|
props2.put("campo22", "valore22");
|
||||||
|
rf2.setProperties(props2);
|
||||||
|
facetFields.add(rf2);
|
||||||
|
ObjectMapper om = new ObjectMapper();
|
||||||
|
|
||||||
|
try {
|
||||||
|
String json = om.writeValueAsString(targetObj);
|
||||||
|
System.out.println(json);
|
||||||
|
}catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static String realData ="{\"type\":\"EService\",\"supertypes\":[\"Service\",\"GCubeResource\",\"Resource\"],\"id\":\"fc212f4e-8741-42fd-ae30-354c46462913\",\"consistsOf\":[{\"type\":\"IsIdentifiedBy\",\"supertypes\":[\"ConsistsOf\"],\"id\":\"4e26d21e-975b-4ea3-8b06-21450661da72\",\"propagationConstraint\":{\"type\":\"PropagationConstraint\",\"add\":\"propagate\",\"delete\":\"cascade\",\"remove\":\"cascade\",\"supertypes\":[\"Property\"]},\"target\":{\"type\":\"SoftwareFacet\",\"supertypes\":[\"Facet\"],\"id\":\"7b5d4e52-1fbf-4e34-949d-49af8dbfb7e5\",\"qualifier\":null,\"name\":\"StorageHub\",\"description\":\"REST web service for Jackrabbit\",\"optional\":false,\"version\":\"1.5.0-SNAPSHOT\",\"group\":\"DataAccess\"}},{\"type\":\"ConsistsOf\",\"id\":\"ab3ff917-dc8b-4015-9251-f23fdf752c9c\",\"propagationConstraint\":{\"type\":\"PropagationConstraint\",\"add\":\"propagate\",\"delete\":\"cascade\",\"remove\":\"cascade\",\"supertypes\":[\"Property\"]},\"target\":{\"type\":\"AccessPointFacet\",\"supertypes\":[\"Facet\"],\"id\":\"cd9392c4-1231-427e-8205-0dfd8f76aa04\",\"authorization\":{\"type\":\"ValueSchema\",\"schema\":null,\"value\":\"gcube-token\",\"supertypes\":[\"GCubeProperty\",\"Property\"]},\"endpoint\":\"https://workspace-repository.dev.d4science.org:443/storagehub/workspace\",\"protocol\":null,\"entryName\":\"org.gcube.data.access.storagehub.StorageHub\",\"description\":null}},{\"type\":\"ConsistsOf\",\"id\":\"ee23ac28-2db8-4b98-b86d-fba3d18eab87\",\"propagationConstraint\":{\"type\":\"PropagationConstraint\",\"add\":\"propagate\",\"delete\":\"cascade\",\"remove\":\"cascade\",\"supertypes\":[\"Property\"]},\"target\":{\"type\":\"AccessPointFacet\",\"supertypes\":[\"Facet\"],\"id\":\"b136870a-9865-4141-b997-c635eb66dfef\",\"authorization\":{\"type\":\"ValueSchema\",\"schema\":null,\"value\":\"gcube-token\",\"supertypes\":[\"GCubeProperty\",\"Property\"]},\"endpoint\":\"https://workspace-repository.dev.d4science.org:443/storagehub/gcube/resource\",\"protocol\":null,\"entryName\":\"StorageHub-remote-management\",\"description\":null}},{\"type\":\"ConsistsOf\",\"id\":\"882bad2f-7ab6-4aa5-884d-87a219ce3caf\",\"propagationConstraint\":{\"type\":\"PropagationConstraint\",\"add\":\"propagate\",\"delete\":\"cascade\",\"remove\":\"cascade\",\"supertypes\":[\"Property\"]},\"target\":{\"type\":\"StateFacet\",\"supertypes\":[\"Facet\"],\"id\":\"9f5e38a2-a202-4f2a-8f22-5aa8700c0cec\",\"date\":\"2024-03-25 14:24:35.934 +0100\",\"value\":\"down\"}},{\"type\":\"ConsistsOf\",\"id\":\"c8c23daf-26b0-4dfd-b0f3-daa408810d3d\",\"propagationConstraint\":{\"type\":\"PropagationConstraint\",\"add\":\"propagate\",\"delete\":\"cascade\",\"remove\":\"cascade\",\"supertypes\":[\"Property\"]},\"target\":{\"type\":\"EventFacet\",\"supertypes\":[\"Facet\"],\"id\":\"401a5260-7888-4de6-ab9d-e06ea084098c\",\"date\":\"2024-03-25 14:22:14.642 +0100\",\"event\":\"ready\"}},{\"type\":\"ConsistsOf\",\"id\":\"933fe059-8ef7-421d-94b9-841c7b504834\",\"propagationConstraint\":{\"type\":\"PropagationConstraint\",\"add\":\"propagate\",\"delete\":\"cascade\",\"remove\":\"cascade\",\"supertypes\":[\"Property\"]},\"target\":{\"type\":\"EventFacet\",\"supertypes\":[\"Facet\"],\"id\":\"5e849b79-172e-492a-981c-72859e1bd693\",\"date\":\"2024-03-25 14:24:35.934 +0100\",\"event\":\"down\"}}]}";
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
|
||||||
import { Observable } from 'rxjs';
|
import { Observable } from 'rxjs';
|
||||||
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
||||||
import { ApplicationConfigService } from 'app/core/config/application-config.service';
|
import { ApplicationConfigService } from 'app/core/config/application-config.service';
|
||||||
import { IFacetComposer } from './i-facet-composer';
|
import { IFacetComposer, IFacetProps } from './i-facet-composer';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,6 +13,11 @@ export interface ITypeSpecification{
|
||||||
facetSpecs: IFacetComposer[];
|
facetSpecs: IFacetComposer[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface IFacetFields{
|
||||||
|
name:string, //nome facet+relazione
|
||||||
|
facetSpecs: IFacetProps[];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
providedIn: 'root'
|
providedIn: 'root'
|
||||||
|
@ -61,5 +66,15 @@ export class FacetComposerService {
|
||||||
return this.http.post<boolean>(serviceUrl,id,{ headers,params})
|
return this.http.post<boolean>(serviceUrl,id,{ headers,params})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getGuiFields(ctxPath:string,type:string,uid:string):Observable<IFacetFields[]>{
|
||||||
|
const serviceUrl = this.applicationConfigService.getEndpointFor('api/is/facetfields');
|
||||||
|
const headers = new HttpHeaders()
|
||||||
|
.append(
|
||||||
|
'Content-Type',
|
||||||
|
'application/json'
|
||||||
|
);
|
||||||
|
let queryParams = new HttpParams();
|
||||||
|
queryParams = queryParams.append("uid",uid).append("resourceType",type).append("currentContext",ctxPath);
|
||||||
|
return this.http.get<IFacetFields[]>(serviceUrl,{params:queryParams});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
</mat-panel-description>
|
</mat-panel-description>
|
||||||
</mat-expansion-panel-header>
|
</mat-expansion-panel-header>
|
||||||
<p> {{typeSpec.description}} </p>
|
<p> {{typeSpec.description}} </p>
|
||||||
|
<p>{{guiFacetFields|json}}</p>
|
||||||
</mat-expansion-panel>
|
</mat-expansion-panel>
|
||||||
|
|
||||||
<div [formGroup]="myForm">
|
<div [formGroup]="myForm">
|
||||||
|
|
|
@ -10,7 +10,7 @@ import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/materia
|
||||||
import { MatExpansionModule } from '@angular/material/expansion';
|
import { MatExpansionModule } from '@angular/material/expansion';
|
||||||
import { MatFormFieldModule } from '@angular/material/form-field';
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
||||||
import { MatInputModule } from '@angular/material/input';
|
import { MatInputModule } from '@angular/material/input';
|
||||||
import { FacetComposerService, ITypeSpecification } from 'app/facet-composer/facet-composer.service';
|
import { FacetComposerService, IFacetFields, ITypeSpecification } from 'app/facet-composer/facet-composer.service';
|
||||||
import { IFacetComposer, IFacetProps } from 'app/facet-composer/i-facet-composer';
|
import { IFacetComposer, IFacetProps } from 'app/facet-composer/i-facet-composer';
|
||||||
import { IContextNode } from 'app/services/i-context-node';
|
import { IContextNode } from 'app/services/i-context-node';
|
||||||
import { IResource } from 'app/services/i-resource';
|
import { IResource } from 'app/services/i-resource';
|
||||||
|
@ -26,7 +26,7 @@ import { MatSelectFilterModule } from 'mat-select-filter';
|
||||||
imports:[CommonModule,MatFormFieldModule,SharedModule,
|
imports:[CommonModule,MatFormFieldModule,SharedModule,
|
||||||
ReactiveFormsModule,MatButtonModule,
|
ReactiveFormsModule,MatButtonModule,
|
||||||
MatDialogModule,MatInputModule,MatExpansionModule,MatSelectFilterModule],
|
MatDialogModule,MatInputModule,MatExpansionModule,MatSelectFilterModule],
|
||||||
providers: [ResourcesImplService, FacetComposerService]
|
providers: [FacetComposerService]
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -43,6 +43,8 @@ export class FacetEditorComponent implements OnInit {
|
||||||
// facetData: IFacetComposer[];
|
// facetData: IFacetComposer[];
|
||||||
typeSpec: ITypeSpecification;
|
typeSpec: ITypeSpecification;
|
||||||
fieldsMap: Map<string, IFacetComposer>;
|
fieldsMap: Map<string, IFacetComposer>;
|
||||||
|
guiFacetMaps: Map<string, any>;
|
||||||
|
guiFacetFields: IFacetFields[];
|
||||||
rawjson: string|any;
|
rawjson: string|any;
|
||||||
|
|
||||||
optionTypes = [
|
optionTypes = [
|
||||||
|
@ -72,42 +74,30 @@ export class FacetEditorComponent implements OnInit {
|
||||||
this.selectedOption = '';
|
this.selectedOption = '';
|
||||||
this.typeSpec = {} as ITypeSpecification;
|
this.typeSpec = {} as ITypeSpecification;
|
||||||
this.fieldsMap = new Map<string,IFacetComposer>();
|
this.fieldsMap = new Map<string,IFacetComposer>();
|
||||||
|
this.guiFacetFields = {} as IFacetFields[];
|
||||||
|
this.guiFacetMaps = new Map<string,any>();
|
||||||
this.myForm = this.fb.group({});
|
this.myForm = this.fb.group({});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit(): void {
|
ngOnInit(): void {
|
||||||
/*
|
/*
|
||||||
this.dataService.getJsonDetails('',this.titleType,this.uid).subscribe(res => {
|
this.dataService.getJsonDetails('',this.titleType,this.uid).subscribe(data => {
|
||||||
this.lookoutObject(res);
|
this.lookoutObject(data);
|
||||||
//TODO: qui va creato rawJson
|
|
||||||
});
|
|
||||||
*/
|
*/
|
||||||
|
//getGuiFields(ctxPath:string,type:string,uid:string
|
||||||
|
this.guiService.getGuiFields(this.titlePath,this.titleType,this.uid).subscribe(res => {
|
||||||
|
this.guiFacetFields = res;
|
||||||
|
this.guiFacetMaps = new Map(res.map((obj) => [obj.name,obj.facetSpecs]))
|
||||||
|
});
|
||||||
|
|
||||||
this.guiService.getFormStructure(this.titlePath,this.titleType).subscribe(res => {
|
this.guiService.getFormStructure(this.titlePath,this.titleType).subscribe(res => {
|
||||||
this.typeSpec = res;
|
this.typeSpec = res;
|
||||||
this.fieldsMap = new Map(res.facetSpecs.map((obj) => [obj.name+'_'+obj.relation, obj]));
|
this.fieldsMap = new Map(res.facetSpecs.map((obj) => [obj.name+'_'+obj.relation, obj]));
|
||||||
console.debug("*********** typeSpec *********");
|
|
||||||
console.debug(this.typeSpec.name);
|
|
||||||
console.debug("********************");
|
|
||||||
this.createAndFillForm(this.rawjson,this.typeSpec);
|
this.createAndFillForm(this.rawjson,this.typeSpec);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
lookoutObject(obj:any){
|
|
||||||
for(const key in obj){
|
|
||||||
//console.debug("*********** lookoutObject *********");
|
|
||||||
console.debug("key: " + key + ", value: " + obj[key]);
|
|
||||||
// console.debug("*********** *********");
|
|
||||||
if(obj[key] instanceof Object){
|
|
||||||
this.lookoutObject(obj[key]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
createAndFillForm(rawSource:string, fData:ITypeSpecification):void{
|
createAndFillForm(rawSource:string, fData:ITypeSpecification):void{
|
||||||
//TODO: VA PASSATO RAWSOURCE (O MAPPA) PER RIEMPIRE LA FORM
|
//TODO: VA PASSATO RAWSOURCE (O MAPPA) PER RIEMPIRE LA FORM
|
||||||
for(let i=0; i<fData.facetSpecs.length; i++){
|
for(let i=0; i<fData.facetSpecs.length; i++){
|
||||||
|
@ -117,9 +107,10 @@ export class FacetEditorComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
createFacetArrayEntry(item: IFacetComposer):void{
|
createFacetArrayEntry(item: IFacetComposer):void{
|
||||||
|
this.guiFacetFields;
|
||||||
const nameplus:string = item.name+'_'+item.relation;
|
const nameplus:string = item.name+'_'+item.relation;
|
||||||
const singleFacetArray: FormArray = this.fb.array([]);
|
const singleFacetArray: FormArray = this.fb.array([]);
|
||||||
singleFacetArray.push(this.createFacetGroup(item,false));
|
singleFacetArray.push(this.createFacetGroup(item,false,this.fieldsMap.get(nameplus)!));
|
||||||
this.myForm.addControl(nameplus,singleFacetArray);
|
this.myForm.addControl(nameplus,singleFacetArray);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,11 +152,11 @@ export class FacetEditorComponent implements OnInit {
|
||||||
addFacet(deno:string): void {
|
addFacet(deno:string): void {
|
||||||
const icf: IFacetComposer = <IFacetComposer>this.fieldsMap.get(deno);
|
const icf: IFacetComposer = <IFacetComposer>this.fieldsMap.get(deno);
|
||||||
const singleFacetArray = this.myForm.controls[deno] as FormArray;
|
const singleFacetArray = this.myForm.controls[deno] as FormArray;
|
||||||
singleFacetArray.push(this.createFacetGroup(icf,true));
|
singleFacetArray.push(this.createFacetGroup(icf,true,this.guiFacetMaps.get(deno)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
createFacetGroup(item: IFacetComposer,isAdded: boolean):FormGroup{
|
createFacetGroup(item: IFacetComposer,isAdded: boolean,facetFields: IFacetComposer):FormGroup{
|
||||||
const facetFg: FormGroup = this.fb.group({});
|
const facetFg: FormGroup = this.fb.group({});
|
||||||
const nameFc = this.fb.control(item.name);
|
const nameFc = this.fb.control(item.name);
|
||||||
facetFg.addControl('facetName', nameFc);
|
facetFg.addControl('facetName', nameFc);
|
||||||
|
@ -191,17 +182,20 @@ export class FacetEditorComponent implements OnInit {
|
||||||
//1. creo group con le properties
|
//1. creo group con le properties
|
||||||
//2. aggiungo formgroup delle properties ai controls per la facet
|
//2. aggiungo formgroup delle properties ai controls per la facet
|
||||||
// facetFg.addControl('properties',this.createPropertyControls(item.guiProps));
|
// facetFg.addControl('properties',this.createPropertyControls(item.guiProps));
|
||||||
return this.addPropertyControls(facetFg,item.guiProps);
|
return this.addPropertyControls(facetFg,item.guiProps,this.guiFacetMaps.get(nameFc+"_"+relationFc)!);
|
||||||
}
|
}
|
||||||
|
|
||||||
addPropertyControls(facetFg:FormGroup, props: IFacetProps[]):FormGroup{
|
addPropertyControls(facetFg:FormGroup, props: IFacetProps[], values: IFacetProps[]):FormGroup{
|
||||||
|
|
||||||
const propsFg = this.fb.group({});
|
const propsFg = this.fb.group({});
|
||||||
|
|
||||||
let fc:FormControl;
|
let fc:FormControl;
|
||||||
for(let i=0; i<props.length; i++){
|
for(let i=0; i<values.length; i++){
|
||||||
const prop=props[i];
|
const prop=props[i];
|
||||||
|
const propName = prop.name;
|
||||||
|
const propValue = prop.value;
|
||||||
if(prop.type==="date"){
|
if(prop.type==="date"){
|
||||||
fc = this.fb.control(new Date())
|
fc = this.fb.control(new Date());
|
||||||
}
|
}
|
||||||
if(prop.type==="number"){
|
if(prop.type==="number"){
|
||||||
fc = this.fb.control(0)
|
fc = this.fb.control(0)
|
||||||
|
@ -223,7 +217,7 @@ export class FacetEditorComponent implements OnInit {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
propsFg.addControl(prop.name,fc); //formGroup.addControl(prop_'controlName', formControl);
|
propsFg.addControl(prop.name,fc); //formGroup.addControl(prop_'controlName', formControl);
|
||||||
// facetFg.addControl("prop_"+prop.name,fc); //formGroup.addControl(prop_'controlName', formControl);
|
|
||||||
}
|
}
|
||||||
facetFg.addControl('props',propsFg);
|
facetFg.addControl('props',propsFg);
|
||||||
return facetFg;
|
return facetFg;
|
||||||
|
|
Loading…
Reference in New Issue