diff --git a/gecoregistration/src/main/java/it/enea/cruise/controller/DataController.java b/gecoregistration/src/main/java/it/enea/cruise/controller/DataController.java index 8d120c5fe6bde6fcf259e26bea0566edcd73776b..7310c1853d46f2a4290397a7c82732e51667774c 100644 --- a/gecoregistration/src/main/java/it/enea/cruise/controller/DataController.java +++ b/gecoregistration/src/main/java/it/enea/cruise/controller/DataController.java @@ -1,38 +1,27 @@ package it.enea.cruise.controller; -import java.awt.Color; -import java.awt.Font; -import java.awt.Paint; -import java.awt.image.BufferedImage; -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.time.LocalTime; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.SortedSet; -import java.util.TreeSet; - -import javax.imageio.ImageIO; - +import com.fasterxml.jackson.databind.ObjectMapper; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; +import it.enea.cruise.data.ElectricMeterReading; +import it.enea.cruise.data.ElectricMeterReading.*; +import it.enea.cruise.data.InputParameters; +import it.enea.cruise.dto.data.DataResponse; +import it.enea.cruise.model.data.DataConsumption; +import it.enea.cruise.model.user.LocalQueryParameter; +import it.enea.cruise.model.user.ParametricQuery; +import it.enea.cruise.model.user.User; +import it.enea.cruise.repositories.DTOManager; +import it.enea.cruise.repositories.data.DataConsumptionRepository; +import it.enea.cruise.repositories.user.LocalQueryParameterRepository; +import it.enea.cruise.repositories.user.ParametricQueryRepository; +import it.enea.cruise.repositories.user.TableMetadataRepository; +import it.enea.cruise.repositories.user.UserRepository; +import it.enea.cruise.service.data.IDataService; +import it.enea.cruise.service.idp.IdpProvider; +import it.enea.cruise.service.parametricQuery.ParametricQueryManager; import jakarta.ws.rs.POST; - +import lombok.extern.log4j.Log4j2; import org.apache.commons.io.IOUtils; import org.apache.hc.core5.annotation.Obsolete; import org.jfree.chart.ChartFactory; @@ -43,51 +32,26 @@ import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.chart.renderer.category.CategoryItemRenderer; import org.jfree.data.category.DefaultCategoryDataset; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CacheEvict; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.http.CacheControl; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; +import org.springframework.http.*; import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.Transactional; - import org.springframework.util.ResourceUtils; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; - -import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.web.bind.annotation.*; -import it.enea.cruise.data.ElectricMeterReading; -import it.enea.cruise.data.ElectricMeterReading.Line; -import it.enea.cruise.data.ElectricMeterReading.Period; -import it.enea.cruise.data.ElectricMeterReading.Property; -import it.enea.cruise.data.ElectricMeterReading.UrbanDataset; -import it.enea.cruise.data.ElectricMeterReading.Values; -import it.enea.cruise.data.InputParameters; -import it.enea.cruise.model.data.DataConsumption; -import it.enea.cruise.model.user.LocalQueryParameter; -import it.enea.cruise.model.user.ParametricQuery; -import it.enea.cruise.model.user.User; -import it.enea.cruise.repositories.data.DataConsumptionRepository; -import it.enea.cruise.service.data.IDataService; -import it.enea.cruise.service.idp.IdpProvider; -import it.enea.cruise.repositories.user.LocalQueryParameterRepository; -import it.enea.cruise.repositories.user.ParametricQueryRepository; -import it.enea.cruise.service.parametricQuery.ParametricQueryManager; -import it.enea.cruise.service.parametricQuery.ParametricQueryManager.ResultWithMetadata; -import it.enea.cruise.repositories.user.TableMetadataRepository; -import it.enea.cruise.repositories.DTOManager; -import it.enea.cruise.repositories.user.UserRepository; -import lombok.extern.log4j.Log4j2; +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalTime; +import java.util.*; +import java.util.List; @RestController @Tag(name = "Dati") @@ -178,7 +142,7 @@ public class DataController { for (ParametricQuery pq : pqList) { parameterMetadata = new ArrayList>(); - Map> resultList = pqm.getResultList(pq); + Map> resultList = pqm.getResultList(pq, true); for (String key : resultList.keySet()) { list = resultList.get(key); @@ -205,6 +169,45 @@ public class DataController { return rs; //new ResponseEntity>(data, HttpStatus.OK); } + @GetMapping("/data/get-function") + public ResponseEntity getFunction( + @RequestHeader(name = "Authorization", required = false) String token, + @RequestHeader(name = "Content-Language", required = false, defaultValue = "it_IT") String language, + @RequestParam("id") Long id + ) { + + ParametricQuery pq = pqueryInterface.findById(id).stream().findFirst().orElse(null); + if (pq == null) return ResponseEntity.notFound().build(); + + List tmdata; + List> parameterMetadata = new ArrayList<>(); + List list = null; + + Map> resultList = pqm.getResultList(pq, true); + + for (String key : resultList.keySet()) { + list = resultList.get(key); + for (String columnName : list) { + HashMap metadata = new HashMap(); + tmdata = lqpInterface.findAllByNameAndUseInFrontEndTrue(columnName); + for (LocalQueryParameter lqpTemp : tmdata) { + if (lqpTemp.getName() == null || "".equals(lqpTemp.getName().trim())) continue; + metadata.put("name", lqpTemp.getName()); + metadata.put("description", lqpTemp.getDescription(language)); + metadata.put("type", lqpTemp.getType()); + metadata.put("example", lqpTemp.getExample()); + metadata.put("unitOfMeasure", lqpTemp.getUnitofmeasure()); + } + + parameterMetadata.add(metadata); + } + + } + pq.setParameterMetadata(parameterMetadata); + + return ResponseEntity.ok(pq); + } + @POST @PostMapping(value = "/data/getData", consumes = {"application/x-www-form-urlencoded", "application/json"}) public ResponseEntity getData( @@ -212,7 +215,7 @@ public class DataController { @RequestHeader(name = "Authorization", required = true) String token, @RequestHeader(name = "Content-Language", required = false, defaultValue = "it_IT") String language) { log.info("Inputdata:" + inputData); - ResultWithMetadata data = dataService.getData(inputData, token, language); + DataResponse data = dataService.getData(inputData, token, language); return new ResponseEntity<>(data, HttpStatus.OK); } @@ -223,7 +226,7 @@ public class DataController { @RequestHeader(name = "Authorization", required = true) String token, @RequestHeader(name = "Content-Language", required = false, defaultValue = "it_IT") String language) { log.info(inputData.toString()); - ResultWithMetadata data = null; //dataService.getData(inputData, token, language); + DataResponse data = null; //dataService.getData(inputData, token, language); return new ResponseEntity<>(data, HttpStatus.OK); } @@ -251,7 +254,7 @@ public class DataController { inputData.setFlowid(18); inputData.setUserid(user.getUserid().intValue()); ParametricQuery pq = pqueryInterface.findById(6L).get(); - ResultWithMetadata data = pqm.executeQuery(pq, inputData.getParameters(), "it_IT"); + DataResponse data = pqm.executeQuery(pq, inputData.getParameters(), "it_IT"); props = new ArrayList(); @@ -304,7 +307,7 @@ public class DataController { inputData.setFlowid(18); inputData.setUserid(user.getUserid().intValue()); ParametricQuery pq = pqueryInterface.findById(9L).get(); - ResultWithMetadata data = pqm.executeQuery(pq, inputData.getParameters(), "it_IT"); + DataResponse data = pqm.executeQuery(pq, inputData.getParameters(), "it_IT"); emr = new ElectricMeterReading(timeZone); uds = emr.generateEmptyUDS(); diff --git a/gecoregistration/src/main/java/it/enea/cruise/dto/data/DataResponse.java b/gecoregistration/src/main/java/it/enea/cruise/dto/data/DataResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..ba71c1d95b7aa1011b0ddec666724525dcaed2dc --- /dev/null +++ b/gecoregistration/src/main/java/it/enea/cruise/dto/data/DataResponse.java @@ -0,0 +1,20 @@ +package it.enea.cruise.dto.data; + +import lombok.Getter; +import lombok.Setter; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Getter @Setter +public class DataResponse { + + List> metadata = new ArrayList<>(); + List> result = new ArrayList<>(); + + public void addMetadata(Map data) { + if (metadata == null) metadata = new ArrayList<>(); + metadata.add(data); + } +} diff --git a/gecoregistration/src/main/java/it/enea/cruise/service/data/DataService.java b/gecoregistration/src/main/java/it/enea/cruise/service/data/DataService.java index 0f5a132aa61d33a96c936f734571cfb8752bab27..1769f2f41a783b079dd50514ab2a616d99c46aa7 100644 --- a/gecoregistration/src/main/java/it/enea/cruise/service/data/DataService.java +++ b/gecoregistration/src/main/java/it/enea/cruise/service/data/DataService.java @@ -1,5 +1,6 @@ package it.enea.cruise.service.data; +import it.enea.cruise.dto.data.DataResponse; import it.enea.cruise.exceptions.TokenNotValidException; import it.enea.cruise.model.user.ParametricQuery; import it.enea.cruise.model.user.User; @@ -7,7 +8,6 @@ import it.enea.cruise.repositories.user.ParametricQueryRepository; import it.enea.cruise.repositories.user.UserRepository; import it.enea.cruise.service.idp.IdpProvider; import it.enea.cruise.service.parametricQuery.ParametricQueryManager; -import it.enea.cruise.service.parametricQuery.ParametricQueryManager.ResultWithMetadata; import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -32,7 +32,7 @@ public class DataService implements IDataService { @Override @Transactional - public ResultWithMetadata getData( + public DataResponse getData( Map inputData, String token, String language) { @@ -41,12 +41,12 @@ public class DataService implements IDataService { log.info("Token to check:" + token); if (idpClientManager.isValid(token)) { - User userdto = idpClientManager.getUserByToken(token); - User user = userInterface.findBySubject(userdto.getUuid()); + User idpUser = idpClientManager.getUserByToken(token); + User user = userInterface.findBySubject(idpUser.getUuid()); inputData.put("userid", user.getUserid().toString()); inputData.put("dataFromYear", startFromYears != null ? startFromYears.toString() : "0"); Optional pq = pqueryInterface.findById(Long.valueOf(inputData.get("queryid"))); - return pq.isPresent() ? pqm.executeQuery(pq.get(), inputData, language) : new ResultWithMetadata(); + return pq.isPresent() ? pqm.executeQuery(pq.get(), inputData, language) : new DataResponse(); } log.info("Warning: token is not valid"); diff --git a/gecoregistration/src/main/java/it/enea/cruise/service/data/IDataService.java b/gecoregistration/src/main/java/it/enea/cruise/service/data/IDataService.java index f57c7df99dcdfdf5423b1fadc11fa6a20bdd3359..2c1170f230e184aa26fc79b529c8424906ba6831 100644 --- a/gecoregistration/src/main/java/it/enea/cruise/service/data/IDataService.java +++ b/gecoregistration/src/main/java/it/enea/cruise/service/data/IDataService.java @@ -1,11 +1,11 @@ package it.enea.cruise.service.data; -import java.util.Map; +import it.enea.cruise.dto.data.DataResponse; -import it.enea.cruise.service.parametricQuery.ParametricQueryManager.ResultWithMetadata; +import java.util.Map; public interface IDataService { - ResultWithMetadata getData( + DataResponse getData( Map inputData, String token, String language); diff --git a/gecoregistration/src/main/java/it/enea/cruise/service/idp/EneaProvider.java b/gecoregistration/src/main/java/it/enea/cruise/service/idp/EneaProvider.java index 53388b9d1c8b5b886de11bc1c3b9e3b85c2573ee..9b0fc01d020d943f384cd0e7e0663f176fe2bd2d 100644 --- a/gecoregistration/src/main/java/it/enea/cruise/service/idp/EneaProvider.java +++ b/gecoregistration/src/main/java/it/enea/cruise/service/idp/EneaProvider.java @@ -1,30 +1,18 @@ package it.enea.cruise.service.idp; -import java.util.ArrayList; -import java.util.List; - - import it.enea.cruise.dto.UserToken; +import it.enea.cruise.model.user.User; +import it.enea.scp.idp.sdk.business.IdpManager; +import it.enea.scp.idp.sdk.model.*; import jakarta.annotation.PostConstruct; -import lombok.NoArgsConstructor; -import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Service; -import it.enea.scp.idp.sdk.business.IdpManager; -import it.enea.scp.idp.sdk.model.ChangePasswordRequest; -import it.enea.scp.idp.sdk.model.ClientDto; -import it.enea.scp.idp.sdk.model.DeleteUserRequest; -import it.enea.scp.idp.sdk.model.IdpResponse; -import it.enea.scp.idp.sdk.model.LoginRequest; -import it.enea.scp.idp.sdk.model.LoginResponse; -import it.enea.scp.idp.sdk.model.TokenValidityResponse; -import it.enea.scp.idp.sdk.model.UpdateUserRequest; -import it.enea.scp.idp.sdk.model.UserDto; -import it.enea.cruise.model.user.User; -import lombok.extern.log4j.Log4j2; +import java.util.ArrayList; +import java.util.List; @Log4j2 @Service @@ -244,5 +232,4 @@ public class EneaProvider implements IdpProvider { } return lResponse.getPayload(); } - } diff --git a/gecoregistration/src/main/java/it/enea/cruise/service/parametricQuery/ParametricQueryManager.java b/gecoregistration/src/main/java/it/enea/cruise/service/parametricQuery/ParametricQueryManager.java index 61335b2f4f18f290b6a4048e37288de53f521593..592f3e437527da68f7fff7ff8bd8c1463a64c55c 100644 --- a/gecoregistration/src/main/java/it/enea/cruise/service/parametricQuery/ParametricQueryManager.java +++ b/gecoregistration/src/main/java/it/enea/cruise/service/parametricQuery/ParametricQueryManager.java @@ -12,7 +12,9 @@ import java.util.List; import java.util.Map; +import it.enea.cruise.dto.data.DataResponse; import it.enea.cruise.repositories.user.LocalQueryParameterRepository; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; @@ -27,24 +29,22 @@ import it.enea.cruise.model.user.ParametricQuery; import lombok.ToString; import lombok.extern.log4j.Log4j2; -@Component @Slf4j +@Component +@RequiredArgsConstructor public class ParametricQueryManager { - @Autowired - private NamedParameterJdbcTemplate namedParameterJdbcTemplate; - - @Autowired - LocalQueryParameterRepository lqpInterface; - - private ParametricQuery pQuery = new ParametricQuery(); + private final NamedParameterJdbcTemplate namedParameterJdbcTemplate; + + + private final LocalQueryParameterRepository lqpInterface; - public ResultWithMetadata executeQuery(ParametricQuery pq, HashMap queryParam, String language) { + public DataResponse executeQuery(ParametricQuery pq, HashMap queryParam, String language) { return executeQuery(pq, (Map) queryParam, language); } - public ResultWithMetadata executeQuery(ParametricQuery pq, Map queryParam, String language) { - ResultWithMetadata resultWithMetadata = new ResultWithMetadata(); + public DataResponse executeQuery(ParametricQuery pq, Map queryParam, String language) { + DataResponse resultWithMetadata = new DataResponse(); List> result; List> parameterMetadata = new ArrayList<>(); @@ -59,14 +59,24 @@ public class ParametricQueryManager { String value; for (LocalQueryParameter lqp : paramsName) { value = queryParam.get(lqp.getName()); - if (lqp.getType().toUpperCase() == "TIMESTAMP") { - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS"); + if ("timestamp".equalsIgnoreCase(lqp.getType())) { Date parsedDate = null; + // Try with millisecond info + try { + parsedDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS").parse(value); + } catch (ParseException e) { + log.error("Error formatting date with millis: {}", value); + } + + // Try without milliseconds try { - parsedDate = dateFormat.parse(value); + parsedDate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").parse(value); } catch (ParseException e) { - e.printStackTrace(); + log.error("Error formatting date without millis: {}", value); } + + if (parsedDate == null) throw new RuntimeException("Error parsing date for parameter " + lqp.getName()); + Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime()); sqlParam.addValue(lqp.getName(), timestamp, getSqlType(lqp.getType())); } @@ -94,7 +104,7 @@ public class ParametricQueryManager { metadata.put("unitOfMeasure", lqpTemp.getUnitofmeasure()); } - resultWithMetadata.setMetadata(metadata); + resultWithMetadata.addMetadata(metadata); } } pq.setParameterMetadata(parameterMetadata); @@ -115,14 +125,26 @@ public class ParametricQueryManager { * Questa funzione estrae la lista dei possibili risultati di una query usando i dati di esempio di ogni parametro. * In questo modo, e' possibile estrarre la lista delle colonne restituite dalla query stessa. */ - /*@Cacheable(value = "parametricqueriesmap", key = "#pq.name")*/ + @Cacheable(value = "parametricqueriesmap", key = "#pq.name") public Map> getResultList(ParametricQuery pq){ + return getResultList(pq, false); + } + + @Cacheable(value = "parametricqueriesmap", key = "#pq.name") + public Map> getResultList(ParametricQuery pq, boolean appendLimit){ if (pq.getQueryType().equals("sql")) { String sql = pq.getSql(); + if (appendLimit) { + if (sql.endsWith(";")) { + sql = sql.substring(0, sql.length() - 1); + } + if (!sql.toLowerCase().endsWith("limit 1")) + sql += " limit 1;"; + } List result = new ArrayList(); List lqp = pq.getParameters(); MapSqlParameterSource sqlParam = new MapSqlParameterSource(); - + // sqlParam.addValue("userid", "1", Types.INTEGER); for (LocalQueryParameter lp : lqp) { sqlParam.addValue(lp.getName(), lp.getExample(), getSqlType(lp.getType())); @@ -130,7 +152,6 @@ public class ParametricQueryManager { // Questo e' lento perche' deve eseguire una query differente per ogni funzione. //SqlRowSet rset = namedParameterJdbcTemplate.queryForRowSet(sql, sqlParam); - namedParameterJdbcTemplate.getJdbcTemplate().setFetchSize(1); Map> resultMap = new HashMap<>(); log.info("Processing query id: {}", pq.getId()); namedParameterJdbcTemplate.query(sql, sqlParam, rset -> { @@ -143,26 +164,16 @@ public class ParametricQueryManager { String tableName = rset.getMetaData().getTableName(1).equalsIgnoreCase("") ? "noName" : rset.getMetaData().getTableName(1); resultMap.put(tableName, result); }); - - - /*int colCount = rset.getMetaData().getColumnCount(); - rset.first(); - for (int i = 1; i <= colCount; i++) { - result.add(rset.getMetaData().getColumnLabel(i)); - } - Map> resultMap = new HashMap>(); - String tableName = rset.getMetaData().getTableName(1).equalsIgnoreCase("") ? "noName" : rset.getMetaData().getTableName(1); - resultMap.put(tableName, result);*/ return resultMap; } else { log.info("Non e' una query SQL!"); RestTemplate restTemplate = new RestTemplate(); - Object result = restTemplate.getForObject(pq.getSql(), Object.class); + Object result = restTemplate.getForObject(pq.getSql(), Object.class); return new HashMap>(); - + } - + } public static int getSqlType(String name) { @@ -245,39 +256,4 @@ public class ParametricQueryManager { return 0; } - -@ToString - public static class ResultWithMetadata { - List> metadata; - List> result; - - - public ResultWithMetadata (){ - metadata = new ArrayList>(); - //result = new ArrayList>(); - } - - public List> getMetadata() { - return metadata; - } - - public void setMetadata(Map metaData) { - metadata.add(metaData); -// for (int i = 1; i<= sqlMetaData.getColumnCount(); i++) { -// Map tmp = new HashMap(); -// tmp.put("name", sqlMetaData.getColumnName(i)); -// tmp.put("type", sqlMetaData.getColumnTypeName(i)); -// -// } - } - - public List> getResult() { - return result; - } - - public void setResult(List> result) { - this.result = result; - } - } - } diff --git a/lec/src/app/components/datasource-configuration/parameters/datasource-configuration-parameter.component.html b/lec/src/app/components/datasource-configuration/parameters/datasource-configuration-parameter.component.html index 755edff83f9ecf003e284dec2fefbbc8054c3b9c..0063fb78865e3331cb53fb0b52f2224592794034 100644 --- a/lec/src/app/components/datasource-configuration/parameters/datasource-configuration-parameter.component.html +++ b/lec/src/app/components/datasource-configuration/parameters/datasource-configuration-parameter.component.html @@ -74,6 +74,11 @@ placeholder="{{ 'DATASOURCE_CONFIGURATION_PARAMETER.PARAMETER_NAME' | translate }}" class="p-inputtext p-component p-element ng-pristine ng-valid p-filled ng-touched"/> +
+ +
diff --git a/lec/src/app/widgets/map/components/map-widget/map-widget.component.ts b/lec/src/app/widgets/map/components/map-widget/map-widget.component.ts index 76afb03145ebc755ab39fbd7ea981ca627060e12..c760c646882c1e05f883158417679b501b68f6a0 100644 --- a/lec/src/app/widgets/map/components/map-widget/map-widget.component.ts +++ b/lec/src/app/widgets/map/components/map-widget/map-widget.component.ts @@ -180,6 +180,7 @@ export class MapWidgetComponent implements OnInit, AfterViewInit { } private buildBodyHtml(metadata: any[], datas: any[]): string { + if (!metadata || metadata.length === 0) return "
Metadata vuoto. Contattare l'amministrator
" let result = "" metadata.forEach((column, index) => { if (column.name) { diff --git a/lec/src/assets/i18n/en.json b/lec/src/assets/i18n/en.json index 31d6293399ad4add28a490339c3d6e98b465af39..e261fdec3e0eb8f7d370a61b2422f864598a8ccf 100644 --- a/lec/src/assets/i18n/en.json +++ b/lec/src/assets/i18n/en.json @@ -136,6 +136,7 @@ "SELECT_A_DATE_PERIOD": "Choose an automatic date", "SELECT_A_DATE_VALUE": "Choose a date", "SELECT_A_NUMBER_VALUE": "Insert a number", + "ADD_VALUE": "Insert a value", "PARAMETER_NAME": "Insert a parameter name" }, "TABLE_WIDGET": { diff --git a/lec/src/assets/i18n/it.json b/lec/src/assets/i18n/it.json index 78069bfcf10db69c338d4727c530c21282ff6eb5..005ac7fdb2999784a912a07d9a1d4893a4f39620 100644 --- a/lec/src/assets/i18n/it.json +++ b/lec/src/assets/i18n/it.json @@ -140,7 +140,8 @@ "SELECT_A_DATE_PERIOD": "Seleziona una data automatica", "SELECT_A_DATE_VALUE": "Scegli una data", "SELECT_A_NUMBER_VALUE": "Valore numerico", - "PARAMETER_NAME": "Nome pararametro" + "PARAMETER_NAME": "Nome pararametro", + "ADD_VALUE": "Inserisci un valore" }, "TABLE_WIDGET": { "NO_DATA": "Nessun dato da visualizzare", diff --git a/lecservice/src/main/java/enea/lecservice/controllers/DataController.java b/lecservice/src/main/java/enea/lecservice/controllers/DataController.java index 4e033acac59341f78e00bc18f2e96ed7fa5fdef6..f767ee8f1ddc12460fd24e47537296f1c5b87539 100644 --- a/lecservice/src/main/java/enea/lecservice/controllers/DataController.java +++ b/lecservice/src/main/java/enea/lecservice/controllers/DataController.java @@ -35,9 +35,8 @@ public class DataController { configuration.setToken(userInfo.get().getToken().getValue()); configuration.setContentLanguage(lang); log.info(configuration.toString()); - - return ServiceResponse.Success(JacksonUtils.fromJson(dataService.getData(configuration), new TypeReference( ) { - })); + + return ServiceResponse.Success(JacksonUtils.fromJson(dataService.getData(configuration), new TypeReference<>() {})); } @GetMapping( value = "admin/getListOfFunctions", produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/lecservice/src/main/java/enea/lecservice/services/DataService.java b/lecservice/src/main/java/enea/lecservice/services/DataService.java index a6b8861a459167cfa3284be4ba40461f7e419a7d..32ea69ee6d185319aedfaee755b53f907ff05483 100644 --- a/lecservice/src/main/java/enea/lecservice/services/DataService.java +++ b/lecservice/src/main/java/enea/lecservice/services/DataService.java @@ -83,12 +83,13 @@ public class DataService implements IDataService { } catch (Exception e) { log.error("Error reading data: ", e); + throw new RuntimeException("Error reading data: ", e); } - if (response != null && response.getStatusCode().is4xxClientError()) { + if (response.getStatusCode().is4xxClientError()) { throw new AccessDeniedException("Data server refused with 4xx error!"); } - return response != null ? response.getBody() : "[]"; + return response.getBody() != null ? response.getBody() : "[]"; } }