blob: a3c34bee4bb1a0b1a62c64133bca2ff647089b58 [file] [log] [blame]
/*
* 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
*
* https://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 java.util.Vector;
import org.apache.directory.fortress.core.GlobalIds;
import org.apache.directory.fortress.core.model.Address;
import org.apache.directory.fortress.core.model.AdminRole;
import org.apache.directory.fortress.core.model.Constraint;
import org.apache.directory.fortress.core.model.Group;
import org.apache.directory.fortress.core.model.OrgUnit;
import org.apache.directory.fortress.core.model.PermObj;
import org.apache.directory.fortress.core.model.Permission;
import org.apache.directory.fortress.core.model.Relationship;
import org.apache.directory.fortress.core.model.Role;
import org.apache.directory.fortress.core.model.SDSet;
import org.apache.directory.fortress.core.model.User;
/**
* This converts between Fortress entities and the JArg Options. It contains attributes passed from JArgs command interpreter.
*
* @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
*/
public class Options implements java.io.Serializable
{
/** Default serialVersionUID */
private static final long serialVersionUID = 1L;
private final CmdLineParser parser;
private final CmdLineParser.Option userId;
private final CmdLineParser.Option password;
private final CmdLineParser.Option newPassword;
private final CmdLineParser.Option ou;
private final CmdLineParser.Option pwPolicy;
private final CmdLineParser.Option cn;
private final CmdLineParser.Option sn;
private final CmdLineParser.Option description;
private final CmdLineParser.Option title;
private final CmdLineParser.Option employeeType;
private final CmdLineParser.Option beginTime;
private final CmdLineParser.Option endTime;
private final CmdLineParser.Option beginDate;
private final CmdLineParser.Option endDate;
private final CmdLineParser.Option beginLockDate;
private final CmdLineParser.Option endLockDate;
private final CmdLineParser.Option dayMask;
private final CmdLineParser.Option name;
private final CmdLineParser.Option timeout;
private final CmdLineParser.Option properties;
private final CmdLineParser.Option roleAssigns;
private final CmdLineParser.Option role;
private final CmdLineParser.Option adminRoleAssigns;
private final CmdLineParser.Option type;
private final CmdLineParser.Option opName;
private final CmdLineParser.Option ascendant;
private final CmdLineParser.Option descendant;
private final CmdLineParser.Option cardinality;
private final CmdLineParser.Option osPs;
private final CmdLineParser.Option osUs;
private final CmdLineParser.Option beginRange;
private final CmdLineParser.Option endRange;
private final CmdLineParser.Option beginInclusive;
private final CmdLineParser.Option endInclusive;
private final CmdLineParser.Option phones;
private final CmdLineParser.Option mobiles;
private final CmdLineParser.Option emails;
private final CmdLineParser.Option address;
private final CmdLineParser.Option state;
private final CmdLineParser.Option city;
private final CmdLineParser.Option postalCode;
private final CmdLineParser.Option postalOfficeBox;
private final CmdLineParser.Option protocol;
private 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 = Integer.valueOf( 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 = Integer.valueOf( getTimeout() );
constraint.setTimeout(to);
}
catch (NumberFormatException ne)
{
constraint.setTimeout(0);
}
}
public String getUserId()
{
return (String) parser.getOptionValue(userId);
}
public String getPassword()
{
return (String) parser.getOptionValue(password);
}
public String getNewPassword()
{
return (String) parser.getOptionValue(newPassword);
}
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.setRoleName(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.setAdminRoleName(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);
}
}