You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2017/12/07 15:01:05 UTC

[isis] 09/18: ISIS-1792: adds DtoMappingHelper domain service

This is an automated email from the ASF dual-hosted git repository.

danhaywood pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/isis.git

commit 4238195496bb9a0d7d756b2bb5678ba92b2bdf29
Author: Dan Haywood <da...@haywood-associates.co.uk>
AuthorDate: Mon Dec 4 08:52:18 2017 +0000

    ISIS-1792: adds DtoMappingHelper domain service
---
 .../isis/applib/services/dto/DtoMappingHelper.java | 66 ++++++++++++++++++++++
 1 file changed, 66 insertions(+)

diff --git a/core/applib/src/main/java/org/apache/isis/applib/services/dto/DtoMappingHelper.java b/core/applib/src/main/java/org/apache/isis/applib/services/dto/DtoMappingHelper.java
new file mode 100644
index 0000000..21c5d74
--- /dev/null
+++ b/core/applib/src/main/java/org/apache/isis/applib/services/dto/DtoMappingHelper.java
@@ -0,0 +1,66 @@
+/**
+ *  Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  See the NOTICE file distributed with
+ *  this work for additional information regarding copyright ownership.
+ *  The ASF licenses this file to You under the Apache License, Version 2.0
+ *  (the "License"); you may not use this file except in compliance with
+ *  the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.isis.applib.services.dto;
+
+import javax.inject.Inject;
+
+import org.apache.isis.applib.annotation.DomainService;
+import org.apache.isis.applib.annotation.NatureOfService;
+import org.apache.isis.applib.annotation.Programmatic;
+import org.apache.isis.applib.services.bookmark.Bookmark;
+import org.apache.isis.applib.services.bookmark.BookmarkService;
+import org.apache.isis.schema.common.v1.BookmarkObjectState;
+import org.apache.isis.schema.common.v1.OidDto;
+
+@DomainService(nature = NatureOfService.DOMAIN)
+public class DtoMappingHelper {
+
+    @Programmatic
+    public OidDto oidDtoFor(final Object object) {
+        final Bookmark bookmark = bookmarkService.bookmarkFor(object);
+        return asOidDto(bookmark);
+    }
+
+    private static OidDto asOidDto(final Bookmark reference) {
+        OidDto argValue;
+        if (reference != null) {
+            argValue = new OidDto();
+            argValue.setObjectType(reference.getObjectType());
+            argValue.setObjectState(bookmarkObjectStateOf(reference));
+            argValue.setObjectIdentifier(reference.getIdentifier());
+        } else {
+            argValue = null;
+        }
+        return argValue;
+    }
+
+    private static BookmarkObjectState bookmarkObjectStateOf(final Bookmark bookmark) {
+        switch (bookmark.getObjectState()) {
+        case PERSISTENT:
+            return BookmarkObjectState.PERSISTENT;
+        case TRANSIENT:
+            return BookmarkObjectState.TRANSIENT;
+        case VIEW_MODEL:
+            return BookmarkObjectState.VIEW_MODEL;
+        }
+        throw new IllegalArgumentException(
+                String.format("objectState '%s' not recognized", bookmark.getObjectState()));
+    }
+
+    @Inject
+    BookmarkService bookmarkService;
+}

-- 
To stop receiving notification emails like this one, please contact
"commits@isis.apache.org" <co...@isis.apache.org>.