Skip to content

Commit 27eaad8

Browse files
committed
#2779 very slow editing of graphical chart:
- Moved methods from ControllerUtils to GetDataPointsUtils;
1 parent a9487c7 commit 27eaad8

File tree

4 files changed

+63
-70
lines changed

4 files changed

+63
-70
lines changed

src/com/serotonin/mango/web/dwr/DataSourceEditDwr.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@
223223
import static com.serotonin.mango.util.LoggingScriptUtils.infoErrorExecutionScript;
224224
import static com.serotonin.mango.util.SqlDataSourceUtils.createSqlDataSourceVO;
225225
import static org.scada_lts.utils.AlarmLevelsDwrUtils.*;
226-
import static org.scada_lts.utils.GetDataPointsUtils.getContextPoints;
226+
import static org.scada_lts.utils.GetDataPointsUtils.getDataPointsByContext;
227227
import static org.scada_lts.utils.PathSecureUtils.toSecurePath;
228228
import static org.scada_lts.utils.XidUtils.validateXid;
229229

@@ -330,7 +330,7 @@ public DwrResponseI18n getPointResponse(int pointId) {
330330
MetaPointLocatorVO locator = dataPoint.getPointLocator();
331331
User user = Common.getUser();
332332
DataPointService dataPointService = new DataPointService();
333-
List<DataPointBean> contextPoints = getContextPoints(locator, user, dataPointService);
333+
List<DataPointBean> contextPoints = getDataPointsByContext(locator, user, dataPointService);
334334
response.addData("contextPoints", contextPoints);
335335
}
336336

@@ -1181,7 +1181,7 @@ public DwrResponseI18n saveMetaPointLocator(int id, String xid,
11811181

11821182
User user = Common.getUser();
11831183
DataPointService dataPointService = new DataPointService();
1184-
List<DataPointBean> contextPoints = getContextPoints(locator, user, dataPointService);
1184+
List<DataPointBean> contextPoints = getDataPointsByContext(locator, user, dataPointService);
11851185
response.addData("contextPoints", contextPoints);
11861186
response.addData("locator", locator);
11871187
return response;

src/com/serotonin/mango/web/mvc/controller/ControllerUtils.java

Lines changed: 0 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,7 @@
2020

2121
import java.util.*;
2222
import java.util.function.BiConsumer;
23-
import java.util.stream.Collectors;
2423

25-
import com.serotonin.db.IntValuePair;
26-
import com.serotonin.mango.DataTypes;
27-
import com.serotonin.mango.vo.dataSource.meta.MetaPointLocatorVO;
2824
import com.serotonin.util.StringUtils;
2925
import org.apache.commons.logging.Log;
3026
import org.apache.commons.logging.LogFactory;
@@ -114,59 +110,6 @@ public static String getHomeUrl(User user) {
114110
return user.getHomeUrl().startsWith("/") ? user.getHomeUrl() : "/" + user.getHomeUrl();
115111
}
116112

117-
public static List<DataPointVO> getUserPoints(User user, List<DataPointVO> allPoints, Comparator<DataPointVO> comparator) {
118-
119-
List<DataPointVO> userPoints = new ArrayList<>();
120-
for (DataPointVO dp : allPoints) {
121-
addPointIfHasPermission(dp, user, userPoints);
122-
}
123-
if(comparator != null) {
124-
userPoints.sort(comparator);
125-
}
126-
return userPoints;
127-
}
128-
129-
public static List<DataPointVO> getContextPoints(User user, List<DataPointVO> allPoints,
130-
DataPointService dataPointService,
131-
Comparator<DataPointVO> comparator) {
132-
133-
List<DataPointVO> contextPoints = new ArrayList<>();
134-
for (DataPointVO dp : allPoints) {
135-
if(dp.getPointLocator() instanceof MetaPointLocatorVO) {
136-
MetaPointLocatorVO pointLocatorVO = dp.getPointLocator();
137-
Set<Integer> ids = pointLocatorVO.getContext().stream().map(IntValuePair::getKey).collect(Collectors.toSet());
138-
List<DataPointVO> dataPoints = dataPointService.getDataPoints(ids);
139-
for(DataPointVO dataPoint: dataPoints) {
140-
addPointIfHasPermission(dataPoint, user, contextPoints);
141-
}
142-
}
143-
}
144-
if(comparator != null) {
145-
contextPoints.sort(comparator);
146-
}
147-
return contextPoints;
148-
}
149-
150-
public static List<DataPointVO> getAnalogPoints(User user, List<DataPointVO> allPoints,
151-
Comparator<DataPointVO> comparator) {
152-
List<DataPointVO> analogPoints = new ArrayList<>();
153-
for (DataPointVO dp : allPoints) {
154-
if (dp.getPointLocator().getDataTypeId() == DataTypes.NUMERIC) {
155-
addPointIfHasPermission(dp, user, analogPoints);
156-
}
157-
}
158-
if(comparator != null) {
159-
analogPoints.sort(comparator);
160-
}
161-
return analogPoints;
162-
}
163-
164-
private static void addPointIfHasPermission(DataPointVO dp, User user, List<DataPointVO> userPoints) {
165-
if (GetDataPointsWithAccess.hasDataPointReadPermission(user, dp)) {
166-
userPoints.add(dp);
167-
}
168-
}
169-
170113
private static void acceptModel(BiConsumer<String, Object> model, List<DataPointVO> userPoints, int prevId, int nextId) {
171114

172115
model.accept("userPoints", userPoints);

src/com/serotonin/mango/web/mvc/controller/DataSourceEditController.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import com.serotonin.mango.vo.dataSource.DataSourceVO;
4040
import com.serotonin.mango.vo.permission.Permissions;
4141

42-
import static com.serotonin.mango.web.mvc.controller.ControllerUtils.*;
42+
import static org.scada_lts.utils.GetDataPointsUtils.*;
4343

4444
public class DataSourceEditController extends ParameterizableViewController {
4545
@Override
@@ -104,12 +104,12 @@ protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpSer
104104

105105
List<DataPointVO> allPoints = dataPointService.getDataPoints(dataSourceVO.getId(), null);
106106

107-
List<DataPointVO> userPoints = getUserPoints(user, allPoints, DataPointExtendedNameComparator.instance);
108-
List<DataPointVO> contextPoints = getContextPoints(user, dp == null ? allPoints : Arrays.asList(dp), dataPointService, DataPointExtendedNameComparator.instance);
107+
List<DataPointVO> userPoints = filteringDataPointsByUser(user, allPoints, DataPointExtendedNameComparator.instance);
108+
List<DataPointVO> contextPoints = getDataPointsByContext(user, allPoints, dataPointService, DataPointExtendedNameComparator.instance);
109109
List<DataPointVO> points = new ArrayList<>();
110110
points.addAll(userPoints);
111111
points.addAll(contextPoints);
112-
List<DataPointVO> analogPoints = getAnalogPoints(user, points, DataPointExtendedNameComparator.instance);
112+
List<DataPointVO> analogPoints = filteringDataPointsByNumericType(user, points, DataPointExtendedNameComparator.instance);
113113

114114
model.put("userPoints", userPoints);
115115
model.put("contextPoints", contextPoints);

src/org/scada_lts/utils/GetDataPointsUtils.java

Lines changed: 56 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,7 @@
2727
import org.scada_lts.mango.service.EventService;
2828
import org.scada_lts.permissions.service.GetDataPointsWithAccess;
2929

30-
import java.util.Collections;
31-
import java.util.HashSet;
32-
import java.util.List;
33-
import java.util.Set;
30+
import java.util.*;
3431
import java.util.function.Function;
3532
import java.util.stream.Collectors;
3633

@@ -99,14 +96,67 @@ public static Set<DataPointBean> getDataPointsByEventHandlers() {
9996
return new HashSet<>(GetDataPointsUtils.getDataPointsByEventHandlers(user, eventHandlers, new DataPointService()));
10097
}
10198

102-
public static List<DataPointBean> getContextPoints(MetaPointLocatorVO locator, User user, DataPointService dataPointService) {
99+
public static List<DataPointBean> getDataPointsByContext(MetaPointLocatorVO locator, User user, DataPointService dataPointService) {
100+
return getDataPointsByContext(locator, user, dataPointService, DataPointBean::new);
101+
}
102+
103+
public static <T> List<T> getDataPointsByContext(MetaPointLocatorVO locator, User user, DataPointService dataPointService, Function<DataPointVO, T> converter) {
103104
return dataPointService.getDataPoints(locator.getContext().stream()
104105
.map(IntValuePair::getKey)
105106
.collect(Collectors.toSet()), user).stream()
106-
.map(DataPointBean::new)
107+
.map(converter)
107108
.collect(Collectors.toList());
108109
}
109110

111+
public static List<DataPointVO> getDataPointsByContext(User user, List<DataPointVO> allPoints,
112+
DataPointService dataPointService,
113+
Comparator<DataPointVO> comparator) {
114+
115+
List<DataPointVO> contextPoints = new ArrayList<>();
116+
for (DataPointVO dp : allPoints) {
117+
if(dp.getPointLocator() instanceof MetaPointLocatorVO) {
118+
MetaPointLocatorVO pointLocatorVO = dp.getPointLocator();
119+
contextPoints.addAll(getDataPointsByContext(pointLocatorVO, user, dataPointService, a -> a));
120+
}
121+
}
122+
if(comparator != null) {
123+
contextPoints.sort(comparator);
124+
}
125+
return contextPoints;
126+
}
127+
128+
public static List<DataPointVO> filteringDataPointsByUser(User user, List<DataPointVO> allPoints, Comparator<DataPointVO> comparator) {
129+
130+
List<DataPointVO> userPoints = new ArrayList<>();
131+
for (DataPointVO dp : allPoints) {
132+
addPointIfHasPermission(dp, user, userPoints);
133+
}
134+
if(comparator != null) {
135+
userPoints.sort(comparator);
136+
}
137+
return userPoints;
138+
}
139+
140+
public static List<DataPointVO> filteringDataPointsByNumericType(User user, List<DataPointVO> allPoints,
141+
Comparator<DataPointVO> comparator) {
142+
List<DataPointVO> analogPoints = new ArrayList<>();
143+
for (DataPointVO dp : allPoints) {
144+
if (dp.getPointLocator().getDataTypeId() == DataTypes.NUMERIC) {
145+
addPointIfHasPermission(dp, user, analogPoints);
146+
}
147+
}
148+
if(comparator != null) {
149+
analogPoints.sort(comparator);
150+
}
151+
return analogPoints;
152+
}
153+
154+
private static void addPointIfHasPermission(DataPointVO dp, User user, List<DataPointVO> userPoints) {
155+
if (GetDataPointsWithAccess.hasDataPointReadPermission(user, dp)) {
156+
userPoints.add(dp);
157+
}
158+
}
159+
110160
private static Set<Integer> getDataPointIdsByViewComponents(View view) {
111161
Set<Integer> ids = new HashSet<>();
112162
for(ViewComponent viewComponent: view.getViewComponents()) {

0 commit comments

Comments
 (0)