[LIB-9] Common interface for all adapters
authorgotty <gotty@hedgecode.org>
Thu, 20 Dec 2018 16:04:15 +0000 (19:04 +0300)
committergotty <gotty@hedgecode.org>
Thu, 20 Dec 2018 16:04:15 +0000 (19:04 +0300)
chesshog-db-etude/src/main/java/org/hedgecode/chess/domain/Adapter.java [new file with mode: 0644]
chesshog-db-etude/src/main/java/org/hedgecode/chess/domain/AuthorAdapter.java
chesshog-db-etude/src/main/java/org/hedgecode/chess/domain/EtudeAdapter.java
chesshog-db-etude/src/main/java/org/hedgecode/chess/domain/EtudePGNAdapter.java [new file with mode: 0644]
chesshog-db-etude/src/main/java/org/hedgecode/chess/domain/EtudeTypeAdapter.java
chesshog-db-etude/src/main/java/org/hedgecode/chess/dto/AuthorDTOAdapter.java
chesshog-db-etude/src/main/java/org/hedgecode/chess/dto/EtudeDTOAdapter.java
chesshog-db-etude/src/main/java/org/hedgecode/chess/dto/EtudeTypeDTOAdapter.java

diff --git a/chesshog-db-etude/src/main/java/org/hedgecode/chess/domain/Adapter.java b/chesshog-db-etude/src/main/java/org/hedgecode/chess/domain/Adapter.java
new file mode 100644 (file)
index 0000000..00d4476
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2018. Developed by Hedgecode.
+ *
+ * Licensed 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.hedgecode.chess.domain;
+
+/**
+ * Common Adapter Interface.
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public interface Adapter<TargetType> {
+
+    Class<TargetType> getTargetClass();
+
+}
index 96bb009..76d3381 100644 (file)
@@ -23,7 +23,7 @@ import java.util.Date;
  *
  * @author Dmitry Samoshin aka gotty
  */
-public interface AuthorAdapter<TargetType> {
+public interface AuthorAdapter<TargetType> extends Adapter<TargetType> {
 
     void setId(TargetType target, Long id);
     void setName(TargetType target, String name);
@@ -32,7 +32,7 @@ public interface AuthorAdapter<TargetType> {
     void setBiography(TargetType target, String biography);
     void setComment(TargetType target, String comment);
 
-    class Empty<TargetType> implements AuthorAdapter<TargetType> {
+    abstract class Empty<TargetType> implements AuthorAdapter<TargetType> {
 
         @Override
         public void setId(TargetType target, Long id) {
index c1dea0b..578fe24 100644 (file)
@@ -24,7 +24,7 @@ import java.util.Date;
  *
  * @author Dmitry Samoshin aka gotty
  */
-public interface EtudeAdapter<TargetType> {
+public interface EtudeAdapter<TargetType> extends Adapter<TargetType> {
 
     void setId(TargetType target, Long id);
     void setHash(TargetType target, BigInteger hash);
@@ -38,7 +38,7 @@ public interface EtudeAdapter<TargetType> {
     void setDate(TargetType target, Date date);
     void setDescription(TargetType target, String description);
 
-    class Empty<TargetType> implements EtudeAdapter<TargetType> {
+    abstract class Empty<TargetType> implements EtudeAdapter<TargetType> {
 
         @Override
         public void setId(TargetType target, Long id) {
diff --git a/chesshog-db-etude/src/main/java/org/hedgecode/chess/domain/EtudePGNAdapter.java b/chesshog-db-etude/src/main/java/org/hedgecode/chess/domain/EtudePGNAdapter.java
new file mode 100644 (file)
index 0000000..66b26c5
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2018. Developed by Hedgecode.
+ *
+ * Licensed 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.hedgecode.chess.domain;
+
+/**
+ *
+ *
+ * @author Dmitry Samoshin aka gotty
+ */
+public class EtudePGNAdapter extends EtudeAdapter.Empty<Etude> {
+
+    @Override
+    public Class<Etude> getTargetClass() {
+        return Etude.class;
+    }
+
+    @Override
+    public void setPgn(Etude target, String pgn) {
+        // todo: assignFromPGN
+    }
+
+}
index abc827f..1c5e058 100644 (file)
@@ -21,14 +21,14 @@ package org.hedgecode.chess.domain;
  *
  * @author Dmitry Samoshin aka gotty
  */
-public interface EtudeTypeAdapter<TargetType> {
+public interface EtudeTypeAdapter<TargetType> extends Adapter<TargetType> {
 
     void setId(TargetType target, Long id);
     void setBrief(TargetType target, String brief);
     void setName(TargetType target, String name);
     void setDescription(TargetType target, String description);
 
-    class Empty<TargetType> implements EtudeTypeAdapter<TargetType> {
+    abstract class Empty<TargetType> implements EtudeTypeAdapter<TargetType> {
 
         @Override
         public void setId(TargetType target, Long id) {
index ecda84a..8328002 100644 (file)
@@ -28,6 +28,11 @@ import org.hedgecode.chess.domain.AuthorAdapter;
 public class AuthorDTOAdapter implements AuthorAdapter<AuthorDTO> {
 
     @Override
+    public Class<AuthorDTO> getTargetClass() {
+        return AuthorDTO.class;
+    }
+
+    @Override
     public void setId(AuthorDTO target, Long id) {
         target.setId(id);
     }
index a9196bf..3cdfeb6 100644 (file)
@@ -31,6 +31,11 @@ import org.hedgecode.chess.domain.EtudeType;
 public class EtudeDTOAdapter implements EtudeAdapter<EtudeDTO> {
 
     @Override
+    public Class<EtudeDTO> getTargetClass() {
+        return EtudeDTO.class;
+    }
+
+    @Override
     public void setId(EtudeDTO target, Long id) {
         target.setId(id);
     }
index ca032ff..7e053af 100644 (file)
@@ -26,6 +26,11 @@ import org.hedgecode.chess.domain.EtudeTypeAdapter;
 public class EtudeTypeDTOAdapter implements EtudeTypeAdapter<EtudeTypeDTO> {
 
     @Override
+    public Class<EtudeTypeDTO> getTargetClass() {
+        return EtudeTypeDTO.class;
+    }
+
+    @Override
     public void setId(EtudeTypeDTO target, Long id) {
         target.setId(id);
     }