package org.ovirt.engine.core.bll;
import java.util.Collections;
import java.util.Map;
import org.ovirt.engine.core.common.VdcObjectType;
import org.ovirt.engine.core.common.action.AdElementParametersBase;
import org.ovirt.engine.core.common.businessentities.ad_groups;
import org.ovirt.engine.core.common.businessentities.tags;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogField;
import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogFields;
@CustomLogFields({ @CustomLogField("AdGroupName") })
public abstract class AdGroupsHandlingCommandBase<T extends AdElementParametersBase> extends CommandBase<T> {
protected tags _tag;
private ad_groups mGroup;
private String mGroupName;
/**
* Constructor for command creation when compensation is applied on startup
*
* @param commandId
*/
protected AdGroupsHandlingCommandBase(Guid commandId) {
super(commandId);
}
public AdGroupsHandlingCommandBase(T parameters) {
super(parameters);
}
protected Guid getGroupId() {
return getParameters().getAdElementId();
}
public String getAdGroupName() {
if (mGroupName == null && getAdGroup() != null) {
mGroupName = getAdGroup().getname();
}
return mGroupName;
}
protected ad_groups getAdGroup() {
if (mGroup == null && !getGroupId().equals(Guid.Empty)) {
mGroup = DbFacade.getInstance().getAdGroupDAO().get(getGroupId());
}
return mGroup;
}
@Override
protected String getDescription() {
return getAdGroupName();
}
public static ad_groups initAdGroup(ad_groups adGroup) {
ad_groups dbGroup = DbFacade.getInstance().getAdGroupDAO().get(adGroup.getid());
if (dbGroup == null) {
DbFacade.getInstance().getAdGroupDAO().save(adGroup);
dbGroup = adGroup;
}
return dbGroup;
}
// TODO to be removed
@Override
public Map<Guid, VdcObjectType> getPermissionCheckSubjects() {
return Collections.singletonMap(getGroupId(), VdcObjectType.User);
}
}