Skip to content

Commit

Permalink
Merge pull request #2881 from SCADA-LTS/release/2.7.7.3
Browse files Browse the repository at this point in the history
Release/2.7.7.3
  • Loading branch information
Limraj authored May 13, 2024
2 parents 7545d75 + 4efbbb2 commit a9a0db7
Show file tree
Hide file tree
Showing 14 changed files with 168 additions and 60 deletions.
3 changes: 3 additions & 0 deletions WebContent/WEB-INF/jsp/viewEdit.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,9 @@
lt = lt.substring(0, lt.length-2);
tp = tp.substring(0, tp.length-2);
lt = Math.trunc(lt);
tp = Math.trunc(tp);
// Save the new location.
ViewDwr.setViewComponentLocation(div.viewComponentId, lt, tp, viewId);
}
Expand Down
4 changes: 2 additions & 2 deletions src/br/org/scadabr/web/dwr/UsersProfilesDwr.java
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ public Map<String, Object> getInitData() {
List<WatchList> watchlists = watchlistDao.getWatchLists();
initData.put("watchlists", watchlists);

ViewService viewDao = new ViewService();
List<View> views = viewDao.getSimpleViews().stream()
ViewService viewService = new ViewService();
List<View> views = viewService.getSimpleViews().stream()
.map(toView())
.collect(Collectors.toList());
initData.put("views", views);
Expand Down
3 changes: 0 additions & 3 deletions src/org/scada_lts/dao/IViewDAO.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ default void init() {}

View findByName(String name);

@Deprecated
void deleteViewForUser(int viewId);

void deleteViewForUser(int viewId, int userId);

List<ScadaObjectIdentifier> selectViewIdentifiersWithAccess(int userId, int profileId);
Expand Down
2 changes: 2 additions & 0 deletions src/org/scada_lts/dao/ScadaRepository.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package org.scada_lts.dao;


import org.scada_lts.dao.model.BaseObjectIdentifier;
import org.scada_lts.dao.model.ScadaObjectIdentifier;

import java.util.List;
Expand All @@ -9,4 +10,5 @@ public interface ScadaRepository<T, ID> extends QueryRepository<T, ID>, CommandR

void update(T entity);
List<ScadaObjectIdentifier> findIdentifiers();
List<BaseObjectIdentifier> findBaseIdentifiers();
}
2 changes: 1 addition & 1 deletion src/org/scada_lts/dao/SystemSettingsDAO.java
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ public void resetDataBase() {
DAO.getInstance().getJdbcTemp().update(DELETE_USERS_PROFILES);

ApplicationBeans.getBean("userCache", UserCacheable.class).resetCache();
ApplicationBeans.getBean("viewCache", ViewCachable.class).resetCache();
ApplicationBeans.getBean("viewCache", ViewCacheable.class).resetCache();
ApplicationBeans.getBean("pointEventDetectorCache", PointEventDetectorCacheable.class).resetCache();
ApplicationBeans.getBean("usersProfileCache", UsersProfileCacheable.class).resetCache();
ApplicationBeans.getBean("highestAlarmLevelCache", HighestAlarmLevelCacheable.class).resetCache();
Expand Down
24 changes: 21 additions & 3 deletions src/org/scada_lts/dao/ViewDAO.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,7 @@
import br.org.scadabr.vo.permission.ViewAccess;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.scada_lts.dao.model.IdName;
import org.scada_lts.dao.model.ScadaObjectIdentifier;
import org.scada_lts.dao.model.ScadaObjectIdentifierRowMapper;
import org.scada_lts.dao.model.*;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.ArgumentPreparedStatementSetter;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
Expand Down Expand Up @@ -105,6 +103,13 @@ public class ViewDAO implements IViewDAO {
+ COLUMN_NAME_NAME+" "
+ "from "
+ "mangoViews";

private static final String VIEW_BASE_IDENTIFIER_SELECT = ""
+"select "
+ COLUMN_NAME_ID+", "
+ COLUMN_NAME_XID+" "
+ "from "
+ "mangoViews";

private static final String VIEW_FILTER_BASE_ON_ID=""
+COLUMN_NAME_ID+"=?";
Expand Down Expand Up @@ -229,6 +234,10 @@ public class ViewDAO implements IViewDAO {
+ VIEW_IDENTIFIER_SELECT + " "
+ "order by "+COLUMN_NAME_NAME;

private static final String VIEW_BASE_IDENTIFIER_SELECT_ORDER_BY_ID = ""
+ VIEW_BASE_IDENTIFIER_SELECT + " "
+ "order by "+COLUMN_NAME_ID;

// @formatter:on

// RowMapper
Expand Down Expand Up @@ -422,6 +431,15 @@ public List<ScadaObjectIdentifier> findIdentifiers() {
.build());
}

@Override
public List<BaseObjectIdentifier> findBaseIdentifiers() {
return DAO.getInstance().getJdbcTemp().query(VIEW_BASE_IDENTIFIER_SELECT_ORDER_BY_ID, new Object[]{},
new BaseObjectIdentifierRowMapper.Builder()
.idColumnName(COLUMN_NAME_ID)
.xidColumnName(COLUMN_NAME_XID)
.build());
}

@Override
@Transactional(readOnly = false,propagation= Propagation.REQUIRES_NEW,isolation= Isolation.READ_COMMITTED,rollbackFor=SQLException.class)
public View save(View entity) {
Expand Down
14 changes: 5 additions & 9 deletions src/org/scada_lts/dao/cache/ViewCache.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,12 @@
import com.serotonin.mango.view.View;
import org.apache.commons.logging.LogFactory;
import org.scada_lts.dao.ViewDAO;
import org.scada_lts.dao.model.BaseObjectIdentifier;
import org.scada_lts.dao.model.ScadaObjectIdentifier;

import java.util.List;

public class ViewCache implements ViewCachable {
public class ViewCache implements ViewCacheable {

private static final org.apache.commons.logging.Log LOG = LogFactory.getLog(ViewCache.class);
private final ViewDAO viewDAO;
Expand All @@ -20,9 +21,9 @@ public ViewCache(ViewDAO viewDAO) {
}

@Override
public List<ScadaObjectIdentifier> findIdentifiers() {
LOG.info("no cache: findAll");
return viewDAO.findIdentifiers();
public List<BaseObjectIdentifier> findIdentifiers() {
LOG.info("no cache: findIdentifiers");
return viewDAO.findBaseIdentifiers();
}

@Override
Expand Down Expand Up @@ -79,11 +80,6 @@ public View findById(int viewId) {
return viewDAO.findById(viewId);
}

@Override
public void deleteViewForUser(int viewId) {
LOG.info("no cache: viewId: " + viewId);
}

@Override
public void deleteViewForUser(int viewId, int userId) {
LOG.info("no cache: viewId: " + viewId + ", userId: " + userId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
import br.org.scadabr.vo.permission.ViewAccess;
import com.serotonin.mango.view.ShareUser;
import com.serotonin.mango.view.View;
import org.scada_lts.dao.model.ScadaObjectIdentifier;
import org.scada_lts.dao.model.BaseObjectIdentifier;
import org.springframework.cache.annotation.*;

import java.util.List;

public interface ViewCachable {
public interface ViewCacheable {

String CACHE_ENABLED_KEY = "view.cache.enabled";

Expand Down Expand Up @@ -39,15 +39,7 @@ public interface ViewCachable {
void update(View view);

@Cacheable(cacheNames = "view_list", key = "'views'")
List<ScadaObjectIdentifier> findIdentifiers();

@Caching(evict = {
@CacheEvict(cacheNames = "permission_view_list_by_user", allEntries = true),
@CacheEvict(cacheNames = "share_user_list_by_view", key = "'shareUsersFromProfile' + #p0"),
@CacheEvict(cacheNames = "share_user_list_by_view", key = "'shareUsers' + #p0")
})
@Deprecated
void deleteViewForUser(int viewId);
List<BaseObjectIdentifier> findIdentifiers();

@Caching(evict = {
@CacheEvict(cacheNames = "permission_view_list_by_user", key = "#p1"),
Expand Down
22 changes: 14 additions & 8 deletions src/org/scada_lts/dao/cache/ViewDaoWithCache.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.serotonin.mango.vo.User;
import org.scada_lts.dao.IViewDAO;
import org.scada_lts.dao.ViewDAO;
import org.scada_lts.dao.model.BaseObjectIdentifier;
import org.scada_lts.dao.model.ScadaObjectIdentifier;
import org.scada_lts.permissions.service.GetViewsWithAccess;
import org.scada_lts.permissions.service.ViewGetShareUsers;
Expand All @@ -17,9 +18,9 @@

public class ViewDaoWithCache implements IViewDAO {

private final ViewCachable viewCache;
private final ViewCacheable viewCache;

public ViewDaoWithCache(ViewCachable viewCache) {
public ViewDaoWithCache(ViewCacheable viewCache) {
this.viewCache = viewCache;
}

Expand Down Expand Up @@ -49,9 +50,9 @@ public void delete(Integer id) {

@Override
public List<View> findAll() {
List<ScadaObjectIdentifier> identifiers = viewCache.findIdentifiers();
List<BaseObjectIdentifier> identifiers = viewCache.findIdentifiers();
List<View> views = new ArrayList<>();
for(ScadaObjectIdentifier identifier: identifiers) {
for(BaseObjectIdentifier identifier: identifiers) {
View view = viewCache.findById(identifier.getId());
if(view != null) {
applyShareUsers(view);
Expand Down Expand Up @@ -118,6 +119,15 @@ public View findByXid(String xid) {

@Override
public List<ScadaObjectIdentifier> findIdentifiers() {
return viewCache.findIdentifiers().stream().map(a -> {
View view = viewCache.findById(a.getId());
ScadaObjectIdentifier scadaObjectIdentifier = new ScadaObjectIdentifier(a.getId(), a.getXid(), view.getName());
return scadaObjectIdentifier;
}).collect(Collectors.toList());
}

@Override
public List<BaseObjectIdentifier> findBaseIdentifiers() {
return viewCache.findIdentifiers();
}

Expand All @@ -136,10 +146,6 @@ public List<View> selectViewWithAccess(int userId, int profileId) {
.collect(Collectors.toList());
}

@Override
@Deprecated
public void deleteViewForUser(int viewId) {}

@Override
public void deleteViewForUser(int viewId, int userId) {
viewCache.deleteViewForUser(viewId, userId);
Expand Down
30 changes: 30 additions & 0 deletions src/org/scada_lts/dao/model/BaseObjectIdentifier.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package org.scada_lts.dao.model;

public class BaseObjectIdentifier {

private int id;
private String xid;

public BaseObjectIdentifier() {}

public BaseObjectIdentifier(int id, String xid) {
this.id = id;
this.xid = xid;
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getXid() {
return xid;
}

public void setXid(String xid) {
this.xid = xid;
}
}
59 changes: 59 additions & 0 deletions src/org/scada_lts/dao/model/BaseObjectIdentifierRowMapper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package org.scada_lts.dao.model;

import org.springframework.jdbc.core.RowMapper;

import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseObjectIdentifierRowMapper implements RowMapper<BaseObjectIdentifier> {

private static final String COLUMN_NAME_ID = "id";
private static final String COLUMN_NAME_XID = "xid";

private final String idColumnName;
private final String xidColumnName;

private BaseObjectIdentifierRowMapper(String idColumnName, String xidColumnName) {
this.idColumnName = idColumnName;
this.xidColumnName = xidColumnName;
}

public static class Builder {
private String idColumnName;
private String xidColumnName;

public Builder idColumnName(String idColumnName) {
this.idColumnName = idColumnName;
return this;
}

public Builder xidColumnName(String xidColumnName) {
this.xidColumnName = xidColumnName;
return this;
}

public BaseObjectIdentifierRowMapper build() {
return new BaseObjectIdentifierRowMapper(idColumnName, xidColumnName);
}
}

public static BaseObjectIdentifierRowMapper withDefaultNames() {
return new BaseObjectIdentifierRowMapper.Builder()
.idColumnName(COLUMN_NAME_ID)
.xidColumnName(COLUMN_NAME_XID)
.build();
}
public String selectScadaObjectIdFrom(String tableName) {
return "select " +
idColumnName + ", " +
xidColumnName + ", " +
"FROM " + tableName + " order by " + idColumnName;
}
@Override
public BaseObjectIdentifier mapRow(ResultSet rs, int rowNum) throws SQLException {
return new BaseObjectIdentifier(
rs.getInt(idColumnName),
rs.getString(xidColumnName)
);
}
}
38 changes: 21 additions & 17 deletions src/org/scada_lts/dao/model/ScadaObjectIdentifier.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,41 +8,45 @@
* places among the project where user want
* to list business object without details.
*/
public class ScadaObjectIdentifier {
public class ScadaObjectIdentifier extends BaseObjectIdentifier {

private BaseObjectIdentifier baseObjectIdentifier;

private int id;
private String xid;
private String name;

public ScadaObjectIdentifier() {}

public ScadaObjectIdentifier(int id, String xid, String name) {
this.id = id;
this.xid = xid;
super(id, xid);
this.baseObjectIdentifier = new BaseObjectIdentifier(id, xid);
this.name = name;
}

public int getId() {
return id;
public String getName() {
return name;
}

public void setId(int id) {
this.id = id;
public void setName(String name) {
this.name = name;
}

public String getXid() {
return xid;
@Override
public int getId() {
return baseObjectIdentifier.getId();
}

public void setXid(String xid) {
this.xid = xid;
@Override
public void setId(int id) {
baseObjectIdentifier.setId(id);
}

public String getName() {
return name;
@Override
public String getXid() {
return baseObjectIdentifier.getXid();
}

public void setName(String name) {
this.name = name;
@Override
public void setXid(String xid) {
baseObjectIdentifier.setXid(xid);
}
}
Loading

0 comments on commit a9a0db7

Please sign in to comment.