1 package org.simantics.db.layer0.util;
\r
3 import org.simantics.databoard.accessor.error.AccessorException;
\r
4 import org.simantics.databoard.binding.Binding;
\r
5 import org.simantics.databoard.type.Datatype;
\r
6 import org.simantics.db.exception.DatabaseException;
\r
7 import org.simantics.db.service.SerialisationSupport;
\r
8 import org.simantics.graph.utils.TGResourceUtil;
\r
9 import org.simantics.graph.utils.TGResourceUtil.LongAdapter;
\r
11 public class ResourceTGValueModifier implements TGValueModifier {
\r
13 final private TGResourceUtil util = new TGResourceUtil();
\r
14 final private SerialisationSupport ss;
\r
16 public ResourceTGValueModifier(SerialisationSupport ss) {
\r
21 public boolean mayNeedModification(Datatype type) {
\r
22 return util.mayHaveResource(type);
\r
26 public Object modify(final DomainProcessorState state, Binding binding, Object value) throws DatabaseException {
\r
30 util.adaptValue( binding, value, new LongAdapter() {
\r
32 public long adapt(long in) {
\r
34 int shortId = ss.getTransientId(in);
\r
35 return state.ids.get(shortId);
\r
36 } catch (DatabaseException e) {
\r
37 e.printStackTrace();
\r
45 } catch (AccessorException e) {
\r
47 throw new DatabaseException(e);
\r