Rev 1306 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package pt.estgp.estgweb.domain;
import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.utils.StringsUtils;
import java.io.Serializable;
import java.util.List;
/**
* Created by jorgemachado on 10/01/14.
*/
public class ProcessEventFileImpl
extends ProcessEventFile
{
private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger =
1.5.0/docs/api/java/util/logging/Logger.html">Logger.
getLogger(ProcessEventImpl.
class);
public static enum AccessLevel
{
ALL_IN_PROCESS,
ALL_EXCEPT_STARTER,
ONLY_STARTER,
OWNER,
FORWARD_EVENTS,
BACKWARD_EVENTS,
DEFINED_USERS_IDS,
DEFINED_ROLES_IDS
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public List
<String
> getOwnerRoles
() {
return null;
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/lang/String.html">String getChoosedOwnerRole
() {
return null;
}
@
1.5.0/docs/api/java/lang/Override.html">Override
public 1.5.0/docs/api/java/io/Serializable.html">Serializable getSerializable
() {
return getId
();
}
public void setFileAccessLevelEnum
(AccessLevel fileAccessLevel
) {
super.
setFileAccessLevel(fileAccessLevel.
name());
}
public AccessLevel getFileAccessLevelEnum
()
{
1.5.0/docs/api/java/lang/System.html">System.
out.
println("File Level:" + getFileAccessLevel
());
if(getFileAccessLevel
() ==
null)
return AccessLevel.
OWNER;
for(AccessLevel al : AccessLevel.
values())
{
if(al.
name().
equals(getFileAccessLevel
()))
{
return al
;
}
}
return AccessLevel.
OWNER;
}
public boolean canSeeFile
(User user
)
{
if(user.
isSuperuser() || user.
hasRole(Globals.
ROLE_PROCESSES_ADMIN))
return true;
if(isOwnedBy
(user
))
return true;
switch(getFileAccessLevelEnum
())
{
case ALL_IN_PROCESS:
return ((ProcessImpl
)getProcessEvent
().
getProcess()).
isInProcess(user
);
case ALL_EXCEPT_STARTER:
return ((ProcessImpl
)getProcessEvent
().
getProcess()).
isInProcess(user
)
&&
!getProcessEvent
().
getProcess().
isOwnedBy(user
);
case ONLY_STARTER:
return isOwnedBy
(user
) ||
getProcessEvent
().
getProcess().
isOwnedBy(user
);
case OWNER:
return isOwnedBy
(user
);
case FORWARD_EVENTS:
return isOwnedBy
(user
) ||
((ProcessEventImpl
)getProcessEvent
()).
isInNextEvents(user
);
case BACKWARD_EVENTS:
return isOwnedBy
(user
) ||
((ProcessEventImpl
)getProcessEvent
()).
isInPreviousEvents(user
);
case DEFINED_USERS_IDS:
if(getFileAccessIdentifiers
() ==
null || getFileAccessIdentifiers
().
trim().
length() ==
0)
{
logger.
error("Atention event: " +getId
() +
" has no target ids and defined access is DEFINED_USERS_IDS");
return false;
}
if(isOwnedBy
(user
)) return true;
List
<String
> ids = StringsUtils.
getStringsFromSerial(getFileAccessIdentifiers
(),
";");
for(1.5.0/docs/api/java/lang/String.html">String idstr: ids
)
{
if(user.
getId() ==
1.5.0/docs/api/java/lang/Long.html">Long.
parseLong(idstr
))
return true;
}
return false;
case DEFINED_ROLES_IDS:
if(getFileAccessRoles
() ==
null || getFileAccessRoles
().
trim().
length() ==
0)
{
logger.
error("Atention event file: " +getId
() +
" has no roles and defined access is DEFINED_ROLES_IDS");
return false;
}
return isOwnedBy
(user
) ||
user.
hasRole(RoleManager.
getRolesFromSerial(getFileAccessRoles
()));
}
logger.
error("Access Level not found in process event file " + getId
());
return false;
}
public boolean canOpenCloseGhost
(User user
)
{
return (isOwnedBy
(user
) && getProcessEvent
().
getCloseDate() ==
null && getProcessEvent
().
getNextEvent() ==
null)
|| user.
isSuperuser() || user.
hasRole(Globals.
ROLE_PROCESSES_ADMIN);
}
}