]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.api.acr/src/org/argeo/api/acr/Content.java
Improve naming. Fix Argeo namespace base.
[lgpl/argeo-commons.git] / org.argeo.api.acr / src / org / argeo / api / acr / Content.java
index c2202b0fa31e14ad7db87a0f104390beaa792a7f..0fdc14fe30e9f0146afbc8f8dde42187086d0200 100644 (file)
@@ -89,10 +89,35 @@ public interface Content extends Iterable<Content>, Map<QName, Object> {
 
        void remove();
 
+       /*
+        * TYPING
+        */
+       List<QName> getContentClasses();
+
+       /** AND */
+       default boolean isContentClass(QName... contentClass) {
+               List<QName> contentClasses = getContentClasses();
+               for (QName cClass : contentClass) {
+                       if (!contentClasses.contains(cClass))
+                               return false;
+               }
+               return true;
+       }
+
+       /** OR */
+       default boolean hasContentClass(QName... contentClass) {
+               List<QName> contentClasses = getContentClasses();
+               for (QName cClass : contentClass) {
+                       if (contentClasses.contains(cClass))
+                               return true;
+               }
+               return false;
+       }
+
        /*
         * DEFAULT METHODS
         */
-       default <A> A adapt(Class<A> clss) throws IllegalArgumentException {
+       default <A> A adapt(Class<A> clss) {
                throw new UnsupportedOperationException("Cannot adapt content " + this + " to " + clss.getName());
        }
 
@@ -107,9 +132,21 @@ public interface Content extends Iterable<Content>, Map<QName, Object> {
        /*
         * CONVENIENCE METHODS
         */
-//     default String attr(String key) {
-//             return get(key, String.class);
-//     }
+       default String attr(String key) {
+               Object obj = get(key);
+               if (obj == null)
+                       return null;
+               return obj.toString();
+
+       }
+
+       default String attr(QName key) {
+               Object obj = get(key);
+               if (obj == null)
+                       return null;
+               return obj.toString();
+
+       }
 //
 //     default String attr(Object key) {
 //             return key != null ? attr(key.toString()) : attr(null);