blob: 14348133c3d946a6eb620e1c362eba883f842b06 [file] [log] [blame]
/*
* Copyright (c) 2013-2014, JoshuaTree Software. All rights reserved.
*/
package us.jts.commander;
import org.apache.log4j.Logger;
import org.apache.wicket.injection.Injector;
import org.apache.wicket.model.Model;
import org.apache.wicket.spring.injection.annot.SpringBean;
import us.jts.fortress.ReviewMgr;
import us.jts.fortress.rbac.OrgUnit;
import us.jts.fortress.rbac.PermObj;
import us.jts.fortress.rbac.Session;
import us.jts.fortress.util.attr.VUtil;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* @author Shawn McKinney
* @version $Rev$
* @param <T>
*/
public class ObjectListModel<T extends Serializable> extends Model
{
@SpringBean
private ReviewMgr reviewMgr;
private static final Logger log = Logger.getLogger(ObjectListModel.class.getName());
private transient PermObj permObj;
private transient List<PermObj> permObjs = null;
private boolean isAdmin;
/**
* Default constructor
*/
public ObjectListModel(final boolean isAdmin, final Session session)
{
Injector.get().inject(this);
this.isAdmin = isAdmin;
this.reviewMgr.setAdmin( session );
}
/**
* User contains the search arguments.
*
* @param permObj
*/
public ObjectListModel(PermObj permObj, final boolean isAdmin, final Session session)
{
Injector.get().inject(this);
this.permObj = permObj;
this.isAdmin = isAdmin;
this.reviewMgr.setAdmin( session );
}
/**
* This data is bound for {@link us.jts.commander.panel.ObjectListPanel}
*
* @return T extends List<User> users data will be bound to panel data view component.
*/
@Override
public T getObject()
{
if (permObjs != null)
{
log.debug(".getObject count: " + permObj != null ? permObjs.size() : "null");
return (T) permObjs;
}
if (permObj == null)
{
log.debug(".getObject null");
permObjs = new ArrayList<PermObj>();
}
else
{
log.debug(".getObject userId: " + permObj != null ? permObj.getObjectName() : "null");
permObjs = getList(permObj);
}
return (T) permObjs;
}
@Override
public void setObject(Object object)
{
log.debug(".setObject count: " + object != null ? ((List<PermObj>)object).size() : "null");
this.permObjs = (List<PermObj>) object;
}
@Override
public void detach()
{
//log.debug(".detach");
this.permObjs = null;
this.permObj = null;
}
public List<PermObj> getList(PermObj permObj)
{
List<PermObj> permObjList = null;
try
{
log.debug(".getList permObjectName: " + permObj != null ? permObj.getObjectName() : "null");
if(VUtil.isNotNullOrEmpty(permObj.getOu()))
{
// TODO: make this work with administrative permissions:
permObjList = reviewMgr.findPermObjs( new OrgUnit( permObj.getOu() ) );
}
else
{
if(isAdmin)
{
permObj.setAdmin( true );
}
permObjList = reviewMgr.findPermObjs( permObj );
}
}
catch (us.jts.fortress.SecurityException se)
{
String error = ".getList caught SecurityException=" + se;
log.warn(error);
}
return permObjList;
}
}