#91 -- Add markup page menu item #94

Merged
romanov73 merged 29 commits from 91-markup into master 2023-04-23 23:43:14 +04:00
5 changed files with 57 additions and 0 deletions
Showing only changes of commit f4600c2ba5 - Show all commits

View File

@ -22,6 +22,7 @@ public class TimeSeriesMarkupController {
public String markupTs(Model model) { public String markupTs(Model model) {
List<TimeSeries> ts = timeSeriesService.getAllTimeSeries(); List<TimeSeries> ts = timeSeriesService.getAllTimeSeries();
model.addAttribute("ts", ts); model.addAttribute("ts", ts);
model.addAttribute("fts", timeSeriesService.getGroupedTendencies(ts.get(0)));
return "markup"; return "markup";
} }
} }

View File

@ -2,6 +2,7 @@ package ru.ulstu.extractor.ts.model;
import org.hibernate.annotations.Fetch; import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode; import org.hibernate.annotations.FetchMode;
import org.json.JSONObject;
import ru.ulstu.extractor.branch.model.Branch; import ru.ulstu.extractor.branch.model.Branch;
import ru.ulstu.extractor.core.BaseEntity; import ru.ulstu.extractor.core.BaseEntity;
@ -15,6 +16,9 @@ import javax.persistence.ManyToOne;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import static ru.ulstu.extractor.util.JsonUtils.getListOfObjects;
@Entity @Entity
public class TimeSeries extends BaseEntity { public class TimeSeries extends BaseEntity {
@ -51,6 +55,14 @@ public class TimeSeries extends BaseEntity {
this.branch = branch; this.branch = branch;
} }
public TimeSeries(JSONObject timeSeries) {
this.name = timeSeries.getString("name");
this.values = getListOfObjects(timeSeries.getJSONArray("values"))
.stream()
.map(TimeSeriesValue::new)
.collect(Collectors.toList());
}
public String getName() { public String getName() {
return name; return name;
} }

View File

@ -1,8 +1,11 @@
package ru.ulstu.extractor.ts.model; package ru.ulstu.extractor.ts.model;
import org.json.JSONObject;
import ru.ulstu.extractor.core.BaseEntity; import ru.ulstu.extractor.core.BaseEntity;
import javax.persistence.Entity; import javax.persistence.Entity;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
@Entity @Entity
@ -28,6 +31,16 @@ public class TimeSeriesValue extends BaseEntity {
this.value = value; this.value = value;
} }
public TimeSeriesValue(JSONObject jsonValue) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss");
try {
this.date = formatter.parse(jsonValue.getString("date"));
} catch (ParseException e) {
e.printStackTrace();
}
this.value = jsonValue.getDouble("value");
}
public Date getDate() { public Date getDate() {
return date; return date;
} }

View File

@ -36,6 +36,7 @@ public class TimeSeriesService {
private final HttpService httpService; private final HttpService httpService;
private final static String TIME_SERIES_SAVE_SERVICE_URL = "http://time-series.athene.tech/api/1.0/add-time-series?setKey=git-extractor"; private final static String TIME_SERIES_SAVE_SERVICE_URL = "http://time-series.athene.tech/api/1.0/add-time-series?setKey=git-extractor";
private final static String TIME_SERIES_TENDENCY_URL = "http://time-series.athene.tech/api/1.0/getSpecificMethodSmoothed"; private final static String TIME_SERIES_TENDENCY_URL = "http://time-series.athene.tech/api/1.0/getSpecificMethodSmoothed";
private final static String TIME_SERIES_GROUPED_TENDENCIES_URL = "http://time-series.athene.tech/api/1.0/getGroupedTendencies";
public TimeSeriesService(TimeSeriesRepository timeSeriesRepository, public TimeSeriesService(TimeSeriesRepository timeSeriesRepository,
TimeSeriesValueRepository timeSeriesValueRepository, TimeSeriesValueRepository timeSeriesValueRepository,
@ -136,4 +137,16 @@ public class TimeSeriesService {
} }
return Optional.empty(); return Optional.empty();
} }
public Optional<TimeSeries> getGroupedTendencies(TimeSeries ts) {
if (ts != null && ts.getValues().size() > 5) {
JSONObject response = httpService.post(TIME_SERIES_GROUPED_TENDENCIES_URL, new JSONObject(new JsonTimeSeries(ts)));
LOG.debug("Send to group time series tendencies");
if (response.has("response") && response.getString("response").equals("empty")) {
return Optional.empty();
}
return Optional.of(new TimeSeries(response));
}
return Optional.empty();
}
} }

View File

@ -0,0 +1,18 @@
package ru.ulstu.extractor.util;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class JsonUtils {
public static List<JSONObject> getListOfObjects(JSONArray jsonArray) {
List<JSONObject> result = new ArrayList<>();
for (int i = 0; i < jsonArray.length(); i++) {
result.add(jsonArray.getJSONObject(i));
}
return result;
}
}