ApplicationPermissionFieldConverter.java
3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package fi.insomnia.bortal.model.converters;
import org.eclipse.persistence.mappings.foundation.AbstractTransformationMapping;
import org.eclipse.persistence.mappings.transformers.AttributeTransformer;
import org.eclipse.persistence.mappings.transformers.FieldTransformer;
import org.eclipse.persistence.sessions.Record;
import org.eclipse.persistence.sessions.Session;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.bortal.enums.BortalApplication;
import fi.insomnia.bortal.enums.apps.IAppPermission;
import fi.insomnia.bortal.model.ApplicationPermission;
public class ApplicationPermissionFieldConverter implements AttributeTransformer, FieldTransformer {
/**
*
*/
private static final long serialVersionUID = 861773188187491632L;
private static final Logger logger = LoggerFactory.getLogger(ApplicationPermissionFieldConverter.class);
// record - - The metadata being used to build the object.
// session - - the current session
// object - - The current object that the attribute is being built for.
@Override
public Object buildAttributeValue(Record record, Object object, Session session) {
logger.debug("Converting record {} to object object {}", record, object);
if (object instanceof ApplicationPermission) {
ApplicationPermission destperm = (ApplicationPermission) object;
logger.debug("destprm appPerm {}", destperm.getApplication());
Object appNameObj = record.get(ApplicationPermission.APPLICATION_COLUMN);
Object permissionObject = record.get(ApplicationPermission.PERMISSION_COLUMN);
try {
if (appNameObj == null || permissionObject == null) {
logger.warn("Application name field in record is empty! {}", record);
return null;
}
String permstr = permissionObject.toString();
BortalApplication appEnum = BortalApplication.valueOf(appNameObj.toString());
for (IAppPermission perm : appEnum.getPermissions()) {
if (perm.toString().equals(permstr)) {
return perm;
}
}
logger.warn("Value {} could not be translated to permission of {}", permstr, appEnum);
} catch (IllegalArgumentException e) {
logger.warn("Value not found in enums while converting ApplicationPermission , AppnameObj {} permissionObj {}", appNameObj, permissionObject);
} catch (NullPointerException ne) {
logger.warn("Caught null pointer in while convertion ApplicatoinPermission to object. AppName: {}, permissionName {}", appNameObj, permissionObject);
}
}
return null;
}
@Override
public void initialize(AbstractTransformationMapping arg0) {
}
// instance - - an instance of the domain class which contains the attribute
// session - - the current session
// fieldName - - the name of the field being transformed. Used if the user
// wants to use this transformer for multiple fields.
@Override
public Object buildFieldValue(Object instance, String session, Session fieldName) {
logger.debug("Converting permission of instance {}. Fieldname {}", instance, fieldName);
if (instance instanceof ApplicationPermission) {
return ((ApplicationPermission) instance).getPermission().toString();
}
return null;
}
}