You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by sm...@apache.org on 2014/10/22 17:44:57 UTC
[38/51] [partial] Rename packages from org.openldap.fortress to
org.apache.directory.fortress.core. Change default suffix to org.apache.
Switch default ldap api from unbound to apache ldap.
http://git-wip-us.apache.org/repos/asf/directory-fortress-core/blob/687ee1ad/src/main/java/org/apache/directory/fortress/core/cli/Options.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/directory/fortress/core/cli/Options.java b/src/main/java/org/apache/directory/fortress/core/cli/Options.java
new file mode 100755
index 0000000..58dcbdd
--- /dev/null
+++ b/src/main/java/org/apache/directory/fortress/core/cli/Options.java
@@ -0,0 +1,698 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.directory.fortress.core.cli;
+
+import org.apache.directory.fortress.core.GlobalIds;
+import org.apache.directory.fortress.core.ldap.group.Group;
+import org.apache.directory.fortress.core.rbac.Address;
+import org.apache.directory.fortress.core.rbac.AdminRole;
+import org.apache.directory.fortress.core.rbac.OrgUnit;
+import org.apache.directory.fortress.core.rbac.PermObj;
+import org.apache.directory.fortress.core.rbac.Permission;
+import org.apache.directory.fortress.core.rbac.Relationship;
+import org.apache.directory.fortress.core.rbac.Role;
+import org.apache.directory.fortress.core.rbac.SDSet;
+import org.apache.directory.fortress.core.rbac.User;
+import org.apache.directory.fortress.core.util.attr.VUtil;
+import org.apache.directory.fortress.core.util.time.Constraint;
+
+import java.util.Vector;
+
+/**
+ * This converts between Fortress entities and the JArg Options. It contains attributes passed from JArgs command interpreter.
+ *
+ * @author Shawn McKinney
+ */
+public class Options implements java.io.Serializable
+{
+ final CmdLineParser parser;
+ final CmdLineParser.Option userId;
+ final CmdLineParser.Option password;
+ final CmdLineParser.Option newPassword;
+ final CmdLineParser.Option ou;
+ final CmdLineParser.Option pwPolicy;
+ final CmdLineParser.Option cn;
+ final CmdLineParser.Option sn;
+ final CmdLineParser.Option description;
+ final CmdLineParser.Option title;
+ final CmdLineParser.Option employeeType;
+ final CmdLineParser.Option beginTime;
+ final CmdLineParser.Option endTime;
+ final CmdLineParser.Option beginDate;
+ final CmdLineParser.Option endDate;
+ final CmdLineParser.Option beginLockDate;
+ final CmdLineParser.Option endLockDate;
+ final CmdLineParser.Option dayMask;
+ final CmdLineParser.Option name;
+ final CmdLineParser.Option timeout;
+ final CmdLineParser.Option properties;
+ final CmdLineParser.Option roleAssigns;
+ final CmdLineParser.Option role;
+ final CmdLineParser.Option adminRoleAssigns;
+ final CmdLineParser.Option type;
+ final CmdLineParser.Option opName;
+ final CmdLineParser.Option ascendant;
+ final CmdLineParser.Option descendant;
+ final CmdLineParser.Option cardinality;
+ final CmdLineParser.Option osPs;
+ final CmdLineParser.Option osUs;
+ final CmdLineParser.Option beginRange;
+ final CmdLineParser.Option endRange;
+ final CmdLineParser.Option beginInclusive;
+ final CmdLineParser.Option endInclusive;
+ final CmdLineParser.Option phones;
+ final CmdLineParser.Option mobiles;
+ final CmdLineParser.Option emails;
+ final CmdLineParser.Option address;
+ final CmdLineParser.Option state;
+ final CmdLineParser.Option city;
+ final CmdLineParser.Option postalCode;
+ final CmdLineParser.Option postalOfficeBox;
+ final CmdLineParser.Option protocol;
+ final CmdLineParser.Option member;
+
+
+ /**
+ * @param parser
+ */
+ public Options(CmdLineParser parser)
+ {
+ this.parser = parser;
+ this.userId = parser.addStringOption('u', "userId");
+ this.password = parser.addStringOption('p', "password");
+ this.newPassword = parser.addStringOption('V', "newpassword");
+ this.ou = parser.addStringOption('o', "orgUnit");
+ this.pwPolicy = parser.addStringOption('w', "pwPolicy");
+ this.cn = parser.addStringOption('c', "cn");
+ this.sn = parser.addStringOption('s', "sn");
+ this.description = parser.addStringOption('d', "description");
+ this.beginTime = parser.addStringOption('b', "beginTime");
+ this.endTime = parser.addStringOption('e', "endTime");
+ this.beginDate = parser.addStringOption('B', "beginDate");
+ this.endDate = parser.addStringOption('E', "endDate");
+ this.beginLockDate = parser.addStringOption('l', "beginLockDate");
+ this.endLockDate = parser.addStringOption('N', "endLockDate");
+ this.dayMask = parser.addStringOption('m', "dayMask");
+ this.name = parser.addStringOption('n', "name");
+ this.timeout = parser.addStringOption('t', "timeout");
+ this.properties = parser.addStringOption('v', "properties");
+ this.roleAssigns = parser.addStringOption('r', "roles");
+ this.role = parser.addStringOption('R', "role");
+ this.adminRoleAssigns = parser.addStringOption('a', "adminRoles");
+ this.type = parser.addStringOption('T', "type");
+ this.opName = parser.addStringOption('O', "opName");
+ this.ascendant = parser.addStringOption('A', "ascendant");
+ this.descendant = parser.addStringOption('D', "descendant");
+ this.cardinality = parser.addStringOption('C', "cardinality");
+ this.osPs = parser.addStringOption('P', "osPs");
+ this.osUs = parser.addStringOption('U', "osUs");
+ this.beginRange = parser.addStringOption('x', "beginRange");
+ this.endRange = parser.addStringOption('w', "endRange");
+ this.beginInclusive = parser.addStringOption('y', "beginInclusive");
+ this.endInclusive = parser.addStringOption('z', "endInclusive");
+ this.phones = parser.addStringOption('y', "phones");
+ this.mobiles = parser.addStringOption('Y', "mobiles");
+ this.emails = parser.addStringOption('@', "emails");
+ this.address = parser.addStringOption('>', "address");
+ this.state = parser.addStringOption('<', "state");
+ this.city = parser.addStringOption('3', "city");
+ this.postalCode = parser.addStringOption('z', "postalCode");
+ this.postalOfficeBox = parser.addStringOption('2', "postalOfficeBox");
+ this.title = parser.addStringOption('3', "title");
+ this.employeeType = parser.addStringOption('4', "employeeType");
+ this.protocol = parser.addStringOption('X', "protocol");
+ this.member = parser.addStringOption('M', "member");
+ }
+
+ /**
+ */
+ public SDSet getSdSet()
+ {
+ SDSet sdSet = new SDSet();
+ sdSet.setName(getName());
+ sdSet.setDescription(getDescription());
+ updateRoleAssigns(sdSet);
+ try
+ {
+ Integer cardinality = new Integer(getCardinality());
+ sdSet.setCardinality(cardinality);
+ }
+ catch (NumberFormatException ne)
+ {
+ // default is '2'.
+ sdSet.setCardinality(2);
+ }
+ return sdSet;
+ }
+
+ /**
+ */
+ public OrgUnit getOrgUnit()
+ {
+ OrgUnit orgUnit = new OrgUnit();
+ orgUnit.setName(getName());
+ orgUnit.setDescription(getDescription());
+ return orgUnit;
+ }
+
+ /**
+ */
+ public Group getGroup()
+ {
+ Group group = new Group();
+ group.setName( getName() );
+ group.setDescription( getDescription() );
+ group.setProtocol( getProtocol() );
+ updateAssigns(group);
+ updateProperties(group);
+ return group;
+ }
+
+ /**
+ */
+ public Role getRole()
+ {
+ Role role = new Role();
+ role.setDescription(getDescription());
+ updateTemporal(role);
+ return role;
+ }
+
+ /**
+ */
+ public AdminRole getAdminRole()
+ {
+ AdminRole role = new AdminRole();
+ role.setDescription(getDescription());
+ role.setBeginRange(getBeginRange());
+ role.setEndRange(getEndRange());
+ Boolean bVal = Boolean.valueOf(getBeginInclusive());
+ role.setBeginInclusive(bVal);
+ bVal = Boolean.valueOf(getEndInclusive());
+ role.setEndInclusive(bVal);
+ updateOsPs(role);
+ updateOsUs(role);
+ updateTemporal(role);
+ return role;
+ }
+
+ /**
+ */
+ public Relationship getRelationship()
+ {
+ Relationship relationship = new Relationship();
+ relationship.setChild(getDescendant());
+ relationship.setParent(getAscendant());
+ return relationship;
+ }
+
+ /**
+ */
+ public PermObj getPermObj()
+ {
+ PermObj permObj = new PermObj();
+ permObj.setObjName( getName() );
+ permObj.setDescription(getDescription());
+ permObj.setOu(getOu());
+ permObj.setType(getType());
+ updateProperties(permObj);
+ return permObj;
+ }
+
+ public Permission getPermission()
+ {
+ Permission perm = new Permission();
+ perm.setObjName( getName() );
+ perm.setOpName(getOpName());
+ updateRoleAssigns(perm);
+ updateProperties(perm);
+ perm.setType(getType());
+ return perm;
+ }
+
+ /**
+ */
+ public User getUser()
+ {
+ User user = new User();
+ user.setUserId(getUserId());
+ user.setPassword(getPassword());
+ user.setOu(getOu());
+ user.setPwPolicy(getPwPolicy());
+ user.setCn(getCn());
+ user.setSn(getSn());
+ user.setDescription(getDescription());
+ user.setTitle(getTitle());
+ user.setEmployeeType(getEmployeeType());
+ updateTemporal(user);
+ updateProperties(user);
+ updateRoleAssigns(user);
+ updateAdminRoleAssigns(user);
+ updatePhones(user);
+ updateMobiles(user);
+ updateEmails(user);
+ updateAddress(user);
+ return user;
+ }
+
+ private void updateTemporal(Constraint constraint)
+ {
+ constraint.setBeginTime(getBeginTime());
+ constraint.setEndTime(getEndTime());
+ constraint.setBeginDate(getBeginDate());
+ constraint.setEndDate(getEndDate());
+ constraint.setBeginLockDate(getBeginLockDate());
+ constraint.setEndLockDate(getEndLockDate());
+ constraint.setDayMask(getDayMask());
+ constraint.setName(getName());
+ try
+ {
+ Integer to = new Integer(getTimeout());
+ constraint.setTimeout(to);
+ }
+ catch (NumberFormatException ne)
+ {
+ constraint.setTimeout(0);
+ }
+ }
+
+ public String getUserId()
+ {
+ return (String) parser.getOptionValue(userId);
+ }
+
+ public char[] getPassword()
+ {
+ char[] pw = null;
+ String szPw = (String) parser.getOptionValue(password);
+ if (VUtil.isNotNullOrEmpty(szPw))
+ {
+ pw = szPw.toCharArray();
+ }
+ return pw;
+ }
+
+ public char[] getNewPassword()
+ {
+ char[] pw = null;
+ String szPw = (String) parser.getOptionValue(newPassword);
+ if (VUtil.isNotNullOrEmpty(szPw))
+ {
+ pw = szPw.toCharArray();
+ }
+ return pw;
+ }
+
+ private void updateProperties(User user)
+ {
+ Vector fractionValues = parser.getOptionValues(properties);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ int indx = szRaw.indexOf(GlobalIds.PROP_SEP);
+ if (indx >= 1)
+ {
+ user.addProperty(szRaw.substring(0, indx), szRaw.substring(indx + 1));
+ }
+ }
+ }
+ }
+
+ private void updateProperties(PermObj permObj)
+ {
+ Vector fractionValues = parser.getOptionValues(properties);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ int indx = szRaw.indexOf(GlobalIds.PROP_SEP);
+ if (indx >= 1)
+ {
+ permObj.addProperty(szRaw.substring(0, indx), szRaw.substring(indx + 1));
+ }
+ }
+ }
+ }
+
+ private void updateProperties(Permission perm)
+ {
+ Vector fractionValues = parser.getOptionValues(properties);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ int indx = szRaw.indexOf(GlobalIds.PROP_SEP);
+ if (indx >= 1)
+ {
+ perm.addProperty(szRaw.substring(0, indx), szRaw.substring(indx + 1));
+ }
+ }
+ }
+ }
+
+ private void updateProperties(Group group)
+ {
+ Vector fractionValues = parser.getOptionValues(properties);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ int indx = szRaw.indexOf("=");
+ if (indx >= 1)
+ {
+ group.addProperty(szRaw.substring(0, indx), szRaw.substring(indx + 1));
+ }
+ }
+ }
+ }
+
+ private void updateAssigns(Group group)
+ {
+ Vector fractionValues = parser.getOptionValues(member);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ group.setMember( szRaw );
+ }
+ }
+ }
+
+ private void updateRoleAssigns(User user)
+ {
+ Vector fractionValues = parser.getOptionValues(roleAssigns);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ user.setRole(szRaw);
+ }
+ }
+ }
+
+ private void updateRoleAssigns(Permission perm)
+ {
+ Vector fractionValues = parser.getOptionValues(roleAssigns);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ perm.setRole(szRaw);
+ }
+ }
+ }
+
+ private void updateAdminRoleAssigns(User user)
+ {
+ Vector fractionValues = parser.getOptionValues(adminRoleAssigns);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ user.setAdminRole(szRaw);
+ }
+ }
+ }
+
+ private void updateRoleAssigns(SDSet sdSet)
+ {
+ Vector fractionValues = parser.getOptionValues(roleAssigns);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ sdSet.addMember(szRaw);
+ }
+ }
+ }
+
+ private void updateOsPs(AdminRole role)
+ {
+ Vector fractionValues = parser.getOptionValues(osPs);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ role.setOsP(szRaw);
+ }
+ }
+ }
+
+ private void updateOsUs(AdminRole role)
+ {
+ Vector fractionValues = parser.getOptionValues(osPs);
+ if (fractionValues != null)
+ {
+ for (Object raw : fractionValues)
+ {
+ String szRaw = (String) raw;
+ role.setOsU(szRaw);
+ }
+ }
+ }
+
+ private void updatePhones(User user)
+ {
+ Vector fractionValues = parser.getOptionValues(phones);
+ if (fractionValues != null)
+ {
+ for (Object val : fractionValues)
+ {
+ String number = (String) val;
+ user.setPhone(number);
+ }
+ }
+ }
+
+ private void updateMobiles(User user)
+ {
+ Vector fractionValues = parser.getOptionValues(mobiles);
+ if (fractionValues != null)
+ {
+ for (Object val : fractionValues)
+ {
+ String number = (String) val;
+ user.setMobile(number);
+ }
+ }
+ }
+
+ private void updateEmails(User user)
+ {
+ Vector fractionValues = parser.getOptionValues(emails);
+ if (fractionValues != null)
+ {
+ for (Object val : fractionValues)
+ {
+ String email = (String) val;
+ user.setPhone(email);
+ }
+ }
+ }
+
+ private void updateAddress(User user)
+ {
+ Address uAddr = user.getAddress();
+ Vector fractionValues = parser.getOptionValues(address);
+ if (fractionValues != null)
+ {
+ for (Object val : fractionValues)
+ {
+ String szAddress = (String) val;
+ uAddr.setAddress(szAddress);
+ }
+ }
+ uAddr.setCity(getCity());
+ uAddr.setState(getState());
+ uAddr.setPostalCode(getPostalCode());
+ uAddr.setPostOfficeBox(getPostOfficeBox());
+ }
+
+ String getState()
+ {
+ return (String) parser.getOptionValue(state);
+ }
+
+ String getCity()
+ {
+ return (String) parser.getOptionValue(city);
+ }
+
+ String getPostalCode()
+ {
+ return (String) parser.getOptionValue(postalCode);
+ }
+
+ String getPostOfficeBox()
+ {
+ return (String) parser.getOptionValue(postalOfficeBox);
+ }
+
+ String getOu()
+ {
+ return (String) parser.getOptionValue(ou);
+ }
+
+ String getPwPolicy()
+ {
+ return (String) parser.getOptionValue(pwPolicy);
+ }
+
+ String getCn()
+ {
+ return (String) parser.getOptionValue(cn);
+ }
+
+ String getSn()
+ {
+ return (String) parser.getOptionValue(sn);
+ }
+
+ String getDescription()
+ {
+ return (String) parser.getOptionValue(description);
+ }
+
+ String getTitle()
+ {
+ return (String) parser.getOptionValue(title);
+ }
+
+ String getEmployeeType()
+ {
+ return (String) parser.getOptionValue(employeeType);
+ }
+
+ String getBeginTime()
+ {
+ return (String) parser.getOptionValue(beginTime);
+ }
+
+ String getEndTime()
+ {
+ return (String) parser.getOptionValue(endTime);
+ }
+
+ String getBeginDate()
+ {
+ return (String) parser.getOptionValue(beginDate);
+ }
+
+ String getEndDate()
+ {
+ return (String) parser.getOptionValue(endDate);
+ }
+
+ String getBeginLockDate()
+ {
+ return (String) parser.getOptionValue(beginLockDate);
+ }
+
+ String getEndLockDate()
+ {
+ return (String) parser.getOptionValue(endLockDate);
+ }
+
+ String getDayMask()
+ {
+ return (String) parser.getOptionValue(dayMask);
+ }
+
+ String getRoleNm()
+ {
+ return (String) parser.getOptionValue(role);
+ }
+
+ String getName()
+ {
+ return (String) parser.getOptionValue(name);
+ }
+
+ String getTimeout()
+ {
+ return (String) parser.getOptionValue(timeout);
+ }
+
+ String getType()
+ {
+ return (String) parser.getOptionValue(type);
+ }
+
+ String getOpName()
+ {
+ return (String) parser.getOptionValue(opName);
+ }
+
+ String getAscendant()
+ {
+ return (String) parser.getOptionValue(ascendant);
+ }
+
+ String getDescendant()
+ {
+ return (String) parser.getOptionValue(descendant);
+ }
+
+ String getCardinality()
+ {
+ return (String) parser.getOptionValue(cardinality);
+ }
+
+ String getBeginRange()
+ {
+ return (String) parser.getOptionValue(beginRange);
+ }
+
+ String getEndRange()
+ {
+ return (String) parser.getOptionValue(endRange);
+ }
+
+ String getBeginInclusive()
+ {
+ return (String) parser.getOptionValue(beginInclusive);
+ }
+
+ String getEndInclusive()
+ {
+ return (String) parser.getOptionValue(endInclusive);
+ }
+
+ String getProtocol()
+ {
+ return (String) parser.getOptionValue(protocol);
+ }
+
+ String getMember()
+ {
+ return (String) parser.getOptionValue(member);
+ }
+}