@Override public int updateAll(Query<? extends Entity> query, Update update) throws UnifyException { return db().updateAll(query, update); }
@Override public int updateFileInboxItemsReadStatus(FileInboxQuery query, FileInboxReadStatus readStatus) throws UnifyException { return db().updateAll(query, new Update().add("readStatus", readStatus)); }
@Override public void saveShortcutTileOrder(List<ShortcutTile> shortcutTileList) throws UnifyException { ShortcutTileQuery query = new ShortcutTileQuery(); Update update = new Update(); for (int i = 0; i < shortcutTileList.size(); i++) { ShortcutTile shortcutTile = shortcutTileList.get(i); query.clear(); update.clear(); query.id(shortcutTile.getId()); update.add("displayOrder", i); db().updateAll(query, update); } }
@Override public int deactivateScheduledTask(Long schduledTaskId) throws UnifyException { return db().updateAll(new ScheduledTaskQuery().id(schduledTaskId), new Update().add("status", RecordStatus.INACTIVE)); }
@Override public int activateScheduledTask(Long schduledTaskId) throws UnifyException { return db().updateAll(new ScheduledTaskQuery().id(schduledTaskId), new Update().add("status", RecordStatus.ACTIVE)); }
@Override public void saveMenuItemOrder(List<ApplicationMenuItem> menuItemList) throws UnifyException { ApplicationMenuItemQuery query = new ApplicationMenuItemQuery(); Update update = new Update(); for (int i = 0; i < menuItemList.size(); i++) { ApplicationMenuItem applicationMenuItem = menuItemList.get(i); query.clear(); update.clear(); query.id(applicationMenuItem.getId()); update.add("displayOrder", i); db().updateAll(query, update); } loadApplicationMenu(); }
@Override public int setPrivilegeStatuses(List<Long> privilegeIds, RecordStatus status) throws UnifyException { return db().updateAll(new PrivilegeQuery().idIn(privilegeIds), new Update().add("status", status)); }
@Override public int setSysParameterValue(String name, Object value) throws UnifyException { return db().updateAll(new SystemParameterQuery().name(name), new Update().add("value", convert(String.class, value, null))); }
@Override public void saveMenuOrder(List<ApplicationMenu> menuList) throws UnifyException { ApplicationMenuQuery query = new ApplicationMenuQuery(); Update update = new Update(); for (int i = 0; i < menuList.size(); i++) { ApplicationMenu applicationMenu = menuList.get(i); query.clear(); update.clear(); query.id(applicationMenu.getId()); update.add("displayOrder", i); db().updateAll(query, update); } loadApplicationMenu(); }
@Transactional @Override public void reset() throws UnifyException { if (!isProductionMode()) { db().updateAll(new SequenceNumberQuery().ignoreEmptyCriteria(true), new Update().add("nextBlock", 1L).add("blockSize", sequenceBlockSize)); sequenceCounterMap.clear(); } }
@Periodic(PeriodicType.SLOWEST) @Transactional(TransactionAttribute.REQUIRES_NEW) public void performUserSessionHouseKeeping(TaskMonitor taskMonitor) throws UnifyException { // Update active session records and remove inactive ones Date workingDt = new Date(); List<String> activeSessionList = new ArrayList<String>(); int expirationInSeconds = getContainerSetting(int.class, UnifyCorePropertyConstants.APPLICATION_SESSION_TIMEOUT, UnifyContainer.DEFAULT_APPLICATION_SESSION_TIMEOUT); expirationInSeconds = expirationInSeconds + expirationInSeconds / 5; Date expiryTime = CalendarUtils.getDateWithOffset(workingDt, -(expirationInSeconds * 1000)); for (UserSession userSession : userSessions.values()) { SessionContext sessionContext = userSession.getSessionContext(); if (expiryTime.before(sessionContext.getLastAccessTime())) { activeSessionList.add(sessionContext.getId()); } else { userSessions.remove(sessionContext.getId()); } } if (!activeSessionList.isEmpty()) { db().updateAll(new UserSessionTrackingQuery().idAmongst(activeSessionList), new Update().add("node", getNodeId()).add("lastAccessTime", workingDt)); } if (grabClusterMasterLock()) { // Delete inactive session db().deleteAll(new UserSessionTrackingQuery().expired(expiryTime)); } }
private void updateModuleStatus(String name, RecordStatus status) throws UnifyException { ModuleQuery query = new ModuleQuery().name(name); if (!db().value(boolean.class, "deactivatable", query)) { throw new UnifyException(SystemModuleErrorConstants.MODULE_DATA_NOT_DEACTIVATABLE, name); } db().updateAll(query, new Update().add("status", status)); }
@Override public int releaseCurrentUserWorkItems(String globalStepName, List<Long> wfItemIds) throws UnifyException { WfStepDef wfStepDef = accessCurrentUserStep(globalStepName); WfItemQuery wfItemQuery = getCurrentUserParticipationWfItemQuery(wfStepDef); wfItemQuery.idIn(wfItemIds); wfItemQuery.heldBy(getUserToken().getUserLoginId()); return db().updateAll(wfItemQuery, new Update().add("heldBy", null)); }
@Transactional(TransactionAttribute.REQUIRES_NEW) public boolean releaseDbLock(String lockName, boolean nodeOnly) throws UnifyException { boolean successfulRelease = false; String lockOwnerId = getLockOwnerId(nodeOnly); logDebug("Attempt by [{0}] to release lock [{1}]...", lockOwnerId, lockName); ClusterLockQuery query = new ClusterLockQuery().lockName(lockName).currentOwner(lockOwnerId); ClusterLock clusterLockData = db().find(query); if (clusterLockData != null) { Integer lockCount = clusterLockData.getLockCount() - 1; if (lockCount > 0) { successfulRelease = db().updateAll(query, new Update().add("lockCount", lockCount)) > 0; if (successfulRelease) { logDebug("Lock [{0}] partially released by [{1}]...", lockName, lockOwnerId); } } else { successfulRelease = db().updateAll(query, new Update().add("currentOwner", null).add("lockCount", Integer.valueOf(0))) > 0; if (successfulRelease) { dbLockList.remove(lockName); logDebug("Lock [{0}] fully released by [{1}]...", lockName, lockOwnerId); } } } if (!successfulRelease) { logDebug("[{0}] failed to release lock [{1}]...", lockOwnerId, lockName); } return successfulRelease; }
private void logOut(UserSession userSession) throws UnifyException { if (userSession != null) { SessionContext sessionContext = userSession.getSessionContext(); db().updateAll(new UserSessionTrackingQuery().id(sessionContext.getId()), new Update().add("userLoginId", null).add("userName", null)); sessionContext.setUserToken(null); sessionContext.clearAttributes(); setRequiredAttributes(sessionContext); } }
private boolean commitPackableDoc(PackableDoc packableDoc, Long wfItemId) throws UnifyException { if (packableDoc.isChanged()) { db().updateAll(new WfItemPackedDocQuery().wfItemId(wfItemId), new Update().add("packedDoc", packableDoc.pack()).add("updateDt", db().getNow())); packableDoc.setChanged(false); return true; } return false; }
@Periodic(PeriodicType.FAST) @Transactional(TransactionAttribute.REQUIRES_NEW) public void performHeartBeat(TaskMonitor taskMonitor) throws UnifyException { String nodeId = getNodeId(); // Send a heart beat. Date lastHeartBeat = db().getNow(); if (db().updateAll(new ClusterNodeQuery().nodeId(nodeId), new Update().add("lastHeartBeat", lastHeartBeat)) == 0) { // Register node ClusterNode clusterNodeData = new ClusterNode(); clusterNodeData.setNodeId(nodeId); clusterNodeData.setLastHeartBeat(lastHeartBeat); clusterNodeData.setIpAddress(NetworkUtils.getLocalHostIpAddress()); UnifyContainerInterface unifyContainerInterface = (UnifyContainerInterface) this.getComponent("unify-commandinterface"); clusterNodeData.setCommandPort(Integer.valueOf(unifyContainerInterface.getPort())); db().create(clusterNodeData); } // Extend life of locks held by this node if (!dbLockList.isEmpty()) { db().updateAll(new ClusterLockQuery().lockNameIn(dbLockList), new Update().add("expiryTime", getNewLockExpirationDate())); } }
@Override public void logIn(UserToken userToken) throws UnifyException { SessionContext sessionContext = getRequestContext().getSessionContext(); // Add user session if not existing if (getUserSession(sessionContext.getId()) == null) { addUserSession(new LocalUserSession(sessionContext)); } // Update user session database record String userLoginId = userToken.getUserLoginId(); String sessionId = sessionContext.getId(); db().updateAll(new UserSessionTrackingQuery().id(sessionId), new Update().add("userLoginId", userLoginId) .add("userLoginId", userToken.getUserLoginId()).add("userName", userToken.getUserName())); if (!userToken.isAllowMultipleLogin()) { List<String> sessionIdList = db().valueList(String.class, "sessionId", new UserSessionTrackingQuery().userLoginId(userLoginId).idNot(sessionId)); if (!sessionIdList.isEmpty()) { // Log other user sessions out db().updateAll(new UserSessionTrackingQuery().idAmongst(sessionIdList), new Update().add("userLoginId", null).add("userLoginId", null).add("userName", null)); forceLogOut(sessionIdList.toArray(new String[sessionIdList.size()])); } } // Update session context sessionContext.setUserToken(userToken); }
@Transactional(TransactionAttribute.REQUIRES_NEW) public boolean downloadFile(TaskMonitor taskMonitor, FileTransferServer fileServer, FileTransferInfo fileTransferInfo, FileInbox fileInbox, String semaphoreSuffix) throws UnifyException { int downloadAttempts = fileInbox.getDownloadAttempts() + 1; try { String filename = fileInbox.getFilename(); addTaskMonitorSessionMessage(taskMonitor, "file.taskmonitor.downloading", filename); fileServer.downloadFile(fileTransferInfo, filename, filename); if (!StringUtils.isBlank(semaphoreSuffix)) { fileServer.createLocalFile(fileTransferInfo, filename + semaphoreSuffix); } db().updateAll(new FileInboxQuery().id(fileInbox.getId()), new Update().add("downloadAttempts", downloadAttempts).add("downloadedOn", new Date()).add("status", FileInboxStatus.RECEIVED)); return true; } catch (UnifyException e) { Update update = new Update().add("downloadAttempts", downloadAttempts); if (downloadAttempts >= fileInbox.getMaxTransferAttempts()) { update.add("status", FileInboxStatus.ABORTED); } db().updateAll(new FileInboxQuery().id(fileInbox.getId()), update); taskMonitor.addException(e); logError(e); } return false; }
@Override public List<Long> grabCurrentUserWorkItems(String globalStepName) throws UnifyException { WfStepDef wfStepDef = accessCurrentUserStep(globalStepName); WfItemQuery wfItemQuery = getCurrentUserParticipationWfItemQuery(wfStepDef); String userLoginID = getUserToken().getUserLoginId(); if (!wfStepDef.isIncludeForwarder()) { wfItemQuery.notForwardedBy(userLoginID); } wfItemQuery.isUnheldOrHeldBy(userLoginID); if (wfStepDef.getItemsPerSession() > 0) { wfItemQuery.limit(wfStepDef.getItemsPerSession()); } db().updateAll(wfItemQuery, new Update().add("heldBy", userLoginID)); wfItemQuery.clear(); wfItemQuery.globalTemplateName(wfStepDef.getGlobalTemplateName()); wfItemQuery.wfStepName(wfStepDef.getName()); wfItemQuery.heldBy(userLoginID); return db().valueList(Long.class, "id", wfItemQuery); }