private void checkStructure(final SystemEnvironment sysEnv, final Long checkId) throws SDMSException { if (checkSet.contains(checkId)) return; checkSet.add(checkId); final SDMSInterval checkIval = SDMSIntervalTable.getObject(sysEnv, checkId); final Long embeddedIntervalId = checkIval.getEmbeddedIntervalId(sysEnv); if (embeddedIntervalId != null) { if (embeddedIntervalId.equals(ivalId)) throw new CommonErrorException( new SDMSMessage(sysEnv, "04209121544", "cyclic references not allowed")); checkStructure(sysEnv, embeddedIntervalId); } final Vector ihList = SDMSIntervalHierarchyTable.idx_parentId.getVector(sysEnv, checkId); final Iterator ihIt = ihList.iterator(); while (ihIt.hasNext()) { final SDMSIntervalHierarchy ih = (SDMSIntervalHierarchy) ihIt.next(); final Long childId = ih.getChildId(sysEnv); if (childId.equals(ivalId)) throw new CommonErrorException( new SDMSMessage(sysEnv, "04209121547", "cyclic references not allowed")); checkStructure(sysEnv, childId); } }
public void go(SystemEnvironment sysEnv) throws SDMSException { sysEnv.checkFeatureAvailability(SystemEnvironment.S_OBJECT_MONITOR); SDMSOutputContainer d_container = null; Vector desc = new Vector(); desc.add("ID"); desc.add("NAME"); desc.add("PRIVS"); d_container = new SDMSOutputContainer(sysEnv, "List of Watch Types", desc); Collections.sort(d_container.dataset, d_container.getComparator(sysEnv, 1)); result.setOutputContainer(d_container); result.setFeedback( new SDMSMessage( sysEnv, "02108241006", "$1 Watch Type(s) found", new Integer(d_container.lines))); }
private Vector collist(ResultSetMetaData mdset) throws SQLException { Vector desc = new Vector(); int j = 0; for (int i = 1; i <= mdset.getColumnCount(); i++) { String cn = mdset.getColumnName(i).toUpperCase(); if (cl_size > 0 && with.get(cn) != null) { Integer t = (Integer) with.get(cn); clist[j] = i; ctype[j] = t.intValue(); j++; } desc.addElement(cn); } cl_size = j; sort(); return desc; }
public void go(SystemEnvironment sysEnv) throws SDMSException { try { obj.resolve(sysEnv); } catch (final NotFoundException nfe) { } final Long seId = obj.seId; final Vector mappedPath = new Vector(obj.path); final String mappedName = (String) mappedPath.remove(mappedPath.size() - 1); final SDMSSchedule parent = SDMSScheduleTable.getSchedule(sysEnv, mappedPath); final Long parentId = parent.getId(sysEnv); if (SDMSScheduleTable.idx_parentId_name.containsKey( sysEnv, new SDMSKey(parentId, mappedName))) { if (replace) { final AlterSchedule as = new AlterSchedule(obj, with, Boolean.FALSE); as.setEnv(env); as.go(sysEnv); result = as.result; return; } throw new DuplicateKeyException( new SDMSMessage( sysEnv, "04207251651", "Object with name $1 already exists within $2", mappedName, SDMSScheduleTable.getObject(sysEnv, parentId).pathString(sysEnv))); } final Long ivalId; final String intervalName = (String) with.get(ParseStr.S_INTERVAL); if (intervalName == null) ivalId = null; else { final SDMSInterval ival = SDMSIntervalTable.idx_name_getUnique(sysEnv, IntervalUtil.mapIdName(intervalName, seId)); ivalId = ival.getId(sysEnv); } final Long uId = env.uid(); final SDMSUser u = SDMSUserTable.getObject(sysEnv, uId); final Long gId; if (!with.containsKey(ParseStr.S_GROUP)) { gId = u.getDefaultGId(sysEnv); } else { final String gName = (String) with.get(ParseStr.S_GROUP); gId = SDMSGroupTable.idx_name_deleteVersion_getUnique(sysEnv, new SDMSKey(gName, new Long(0))) .getId(sysEnv); if (!SDMSMemberTable.idx_gId_uId.containsKey(sysEnv, new SDMSKey(gId, uId)) && !SDMSMemberTable.idx_gId_uId.containsKey( sysEnv, new SDMSKey(SDMSObject.adminGId, uId))) { throw new CommonErrorException( new SDMSMessage( sysEnv, "03401151027", "User $1 does not belong to Group $2", u.getName(sysEnv), gName)); } } Long inheritPrivs; if (with.containsKey(ParseStr.S_INHERIT)) { inheritPrivs = (Long) with.get(ParseStr.S_INHERIT); if (inheritPrivs == null) inheritPrivs = new Long(0); } else inheritPrivs = null; long lpriv = (inheritPrivs == null ? parent.getPrivilegeMask() : inheritPrivs.longValue()); if ((parent.getPrivilegeMask() & lpriv) != lpriv) { throw new CommonErrorException(new SDMSMessage(sysEnv, "03202061327", "Incompatible grant")); } inheritPrivs = new Long(lpriv); if (!with.containsKey(ParseStr.S_ACTIVE)) active = Boolean.TRUE; else active = (Boolean) with.get(ParseStr.S_ACTIVE); String tz; String warning = ""; if (with.containsKey(ParseStr.S_TIME)) { tz = (String) with.get(ParseStr.S_TIME); TimeZone tmp = TimeZone.getTimeZone(tz); if (!tz.equals(tmp.getID())) { throw new CommonErrorException( new SDMSMessage(sysEnv, "03207031503", "Time Zone " + tz + " unknown")); } } else { TimeZone tmp = TimeZone.getDefault(); tz = tmp.getID(); } SDMSScheduleTable.table.create( sysEnv, mappedName, gId, ivalId, parentId, tz, seId, active, inheritPrivs); result.setFeedback(new SDMSMessage(sysEnv, "04207251652", "Schedule created")); }
public void go(SystemEnvironment sysEnv) throws SDMSException { Long sgId = null; Long ZERO = new Long(0); if (!sysEnv.cEnv.gid().contains(SDMSObject.adminGId)) { SDMSPrivilege p = new SDMSPrivilege(); Vector v = SDMSMemberTable.idx_uId.getVector(sysEnv, sysEnv.cEnv.uid()); for (int i = 0; i < v.size(); i++) { SDMSMember m = (SDMSMember) v.get(i); try { SDMSGrant gr = SDMSGrantTable.idx_objectId_gId_getUnique( sysEnv, new SDMSKey(ZERO, m.getGId(sysEnv))); p.addPriv(sysEnv, gr.getPrivs(sysEnv).longValue()); } catch (NotFoundException nfe) { } } try { if (sysEnv.selectGroup != null) { SDMSGroup sg = SDMSGroupTable.idx_name_getUnique(sysEnv, sysEnv.selectGroup); sgId = sg.getId(sysEnv); } } catch (NotFoundException nfe) { } if (!(p.can(SDMSPrivilege.MANAGE_SEL) || (sgId != null && sysEnv.cEnv.gid().contains(sgId)))) throw new AccessViolationException( new SDMSMessage(sysEnv, "03003081235", "Insufficient Privileges")); } int read = 0; SDMSOutputContainer d_container = null; if (cl_size > 0) { clist = new int[cl_size]; ctype = new int[cl_size]; } try { Statement stmt = sysEnv.dbConnection.createStatement(); ResultSet rset = stmt.executeQuery(selectCmd); ResultSetMetaData mdset = rset.getMetaData(); Vector desc = collist(mdset); d_container = new SDMSOutputContainer(sysEnv, "Selected Values", desc); while (rset.next()) { Vector data = new Vector(); int j = 0; for (int i = 1; i <= desc.size(); i++) { Object o = rset.getObject(i); if (cl_size > 0 && j < cl_size && i == clist[j]) { o = convert(sysEnv, o, j); j++; } data.addElement((rset.wasNull() ? null : o)); } d_container.addData(sysEnv, data); read++; } stmt.close(); sysEnv.dbConnection.commit(); } catch (SQLException sqle) { try { sysEnv.dbConnection.rollback(); } catch (SQLException sqle2) { throw new RecoverableException(new SDMSMessage(sysEnv, "03310281524", "Connection lost")); } throw new CommonErrorException( new SDMSMessage(sysEnv, "03204170024", "SQL Error : $1", sqle.toString())); } if (sv != null && sv.size() > 0) { int sca[] = new int[sv.size()]; for (int i = 0; i < sv.size(); i++) { sca[i] = ((Integer) sv.get(i)).intValue(); if (sca[i] >= d_container.columns) throw new CommonErrorException( new SDMSMessage( sysEnv, "03003081227", "The sort column specified ($1) exceeds the number of columns in the output", new Integer(sca[i]))); } Collections.sort(d_container.dataset, d_container.getComparator(sysEnv, sca)); } result.setOutputContainer(d_container); result.setFeedback( new SDMSMessage(sysEnv, "03204112153", "$1 Row(s) selected", new Integer(read))); }