diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/AudioForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/AudioForm.java
index 403cd9da9..67288af40 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/AudioForm.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/AudioForm.java
@@ -18,20 +18,15 @@
*/
package com.arsdigita.cms.ui.assets.forms;
-import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
-import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.cms.ui.assets.AssetPane;
import com.arsdigita.cms.ui.assets.AssetSearchWidget;
import com.arsdigita.globalization.GlobalizedMessage;
-import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.CmsConstants;
import org.librecms.assets.AudioAsset;
import org.librecms.assets.LegalMetadata;
-import org.librecms.contentsection.Asset;
-import org.librecms.contentsection.AssetRepository;
import java.util.Map;
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalAudioAssetForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalAudioAssetForm.java
index a90806853..25f931406 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalAudioAssetForm.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalAudioAssetForm.java
@@ -18,6 +18,7 @@
*/
package com.arsdigita.cms.ui.assets.forms;
+import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormSectionEvent;
@@ -25,23 +26,19 @@ import com.arsdigita.cms.ui.assets.AssetPane;
import com.arsdigita.cms.ui.assets.AssetSearchWidget;
import com.arsdigita.globalization.GlobalizedMessage;
-import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.CmsConstants;
-import org.librecms.assets.Bookmark;
import org.librecms.assets.ExternalAudioAsset;
import org.librecms.assets.LegalMetadata;
-import org.librecms.contentsection.Asset;
-import org.librecms.contentsection.AssetRepository;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.HashMap;
+import java.util.Map;
/**
*
* @author Jens Pelzetter
* @author Yannick Bülter
*/
-public class ExternalAudioAssetForm
+public class ExternalAudioAssetForm
extends AbstractBookmarkForm {
private AssetSearchWidget assetSearchWidget;
@@ -64,17 +61,21 @@ public class ExternalAudioAssetForm
@Override
protected void initForm(final PageState state,
- final Optional selectedAsset) {
- super.initForm(state, selectedAsset);
+ final Map data) {
- if (selectedAsset.isPresent()) {
- final ExternalAudioAsset externalAudioAsset
- = (ExternalAudioAsset) selectedAsset.get();
+ super.initForm(state, data);
- final LegalMetadata legalMetadata = externalAudioAsset
- .getLegalMetadata();
- if (legalMetadata != null) {
- assetSearchWidget.setValue(state, legalMetadata.getObjectId());
+ final Long selectedAssetId = getSelectedAssetId(state);
+
+ if (selectedAssetId != null) {
+
+ if (data.containsKey(
+ ExternalAudioAssetFormController.LEGAL_METADATA_ID)) {
+
+ final long legalMetadataId = (long) data
+ .get(ExternalAudioAssetFormController.LEGAL_METADATA_ID);
+
+ assetSearchWidget.setValue(state, legalMetadataId);
}
}
}
@@ -84,60 +85,20 @@ public class ExternalAudioAssetForm
return ExternalAudioAsset.class;
}
-// @Override
-// protected Asset createAsset(final FormSectionEvent event)
-// throws FormProcessException {
-//
-// Objects.requireNonNull(event);
-//
-// final PageState state = event.getPageState();
-//
-// final ExternalAudioAsset externalAudioAsset = new ExternalAudioAsset();
-//
-// updateData((Bookmark) externalAudioAsset, state);
-// updateData(externalAudioAsset, state);
-//
-// return externalAudioAsset;
-// }
- protected void updateData(final ExternalAudioAsset externalAudioAsset,
- final PageState state) {
-
- final Long legalMetadataId = (Long) assetSearchWidget.getValue(state);
- if (legalMetadataId != null) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final AssetRepository assetRepo = cdiUtil.findBean(
- AssetRepository.class);
- final LegalMetadata legalMetadata = (LegalMetadata) assetRepo
- .findById(legalMetadataId)
- .orElseThrow(() -> new IllegalArgumentException(String.format(
- "No LegalMetadata asset with ID %d in the database.",
- legalMetadataId)));
-
- externalAudioAsset.setLegalMetadata(legalMetadata);
- }
- }
-
@Override
- protected void updateAsset(final Asset asset,
- final FormSectionEvent event) {
-
- Objects.requireNonNull(asset);
- Objects.requireNonNull(event);
+ protected Map collectData(final FormSectionEvent event)
+ throws FormProcessException {
final PageState state = event.getPageState();
- if (!(asset instanceof ExternalAudioAsset)) {
- throw new IllegalArgumentException(String.format(
- "Provided asset is not an instance of class (or sub class of) "
- + "'%s' but is an instance of class '%s'",
- ExternalAudioAsset.class.getName(),
- asset.getClass().getName()));
+ final Map data = new HashMap<>();
+ if (assetSearchWidget.getValue(state) != null) {
+
+ data.put(ExternalAudioAssetFormController.LEGAL_METADATA_ID,
+ assetSearchWidget.getValue(state));
}
- final ExternalAudioAsset ExternalAudioAsset = (ExternalAudioAsset) asset;
-
- updateData((Bookmark) ExternalAudioAsset, state);
- updateData(ExternalAudioAsset, state);
+ return data;
}
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalVideoAssetForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalVideoAssetForm.java
index 8b5f3d26e..d0760b9ad 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalVideoAssetForm.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalVideoAssetForm.java
@@ -18,6 +18,7 @@
*/
package com.arsdigita.cms.ui.assets.forms;
+import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormSectionEvent;
@@ -25,23 +26,19 @@ import com.arsdigita.cms.ui.assets.AssetPane;
import com.arsdigita.cms.ui.assets.AssetSearchWidget;
import com.arsdigita.globalization.GlobalizedMessage;
-import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.CmsConstants;
-import org.librecms.assets.Bookmark;
-
-import java.util.Objects;
-import java.util.Optional;
import org.librecms.assets.ExternalVideoAsset;
import org.librecms.assets.LegalMetadata;
-import org.librecms.contentsection.Asset;
-import org.librecms.contentsection.AssetRepository;
+
+import java.util.HashMap;
+import java.util.Map;
/**
*
* @author Jens Pelzetter
*/
-public class ExternalVideoAssetForm
+public class ExternalVideoAssetForm
extends AbstractBookmarkForm {
private AssetSearchWidget assetSearchWidget;
@@ -64,18 +61,18 @@ public class ExternalVideoAssetForm
@Override
protected void initForm(final PageState state,
- final Optional selectedAsset) {
- super.initForm(state, selectedAsset);
+ final Map data) {
- if (selectedAsset.isPresent()) {
- final ExternalVideoAsset externalVideoAsset
- = (ExternalVideoAsset) selectedAsset
- .get();
+ super.initForm(state, data);
- final LegalMetadata legalMetadata = externalVideoAsset
- .getLegalMetadata();
- if (legalMetadata != null) {
- assetSearchWidget.setValue(state, legalMetadata.getObjectId());
+ final Long selectedAssetId = getSelectedAssetId(state);
+ if (selectedAssetId != null) {
+
+ if (data.containsKey(
+ ExternalVideoAssetFormController.LEGAL_METADATA_ID)) {
+ assetSearchWidget.setValue(
+ state,
+ data.get(ExternalVideoAssetFormController.LEGAL_METADATA_ID));
}
}
}
@@ -84,62 +81,20 @@ public class ExternalVideoAssetForm
protected Class getAssetClass() {
return ExternalVideoAsset.class;
}
-
-// @Override
-// protected Asset createAsset(final FormSectionEvent event)
-// throws FormProcessException {
-//
-// Objects.requireNonNull(event);
-//
-// final PageState state = event.getPageState();
-//
-// final ExternalVideoAsset externalVideoAsset = new ExternalVideoAsset();
-//
-// updateData((Bookmark) externalVideoAsset, state);
-// updateData(externalVideoAsset, state);
-//
-// return externalVideoAsset;
-// }
-
- protected void updateData(final ExternalVideoAsset externalVideoAsset,
- final PageState state) {
-
- final Long legalMetadataId = (Long) assetSearchWidget.getValue(state);
- if (legalMetadataId != null) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final AssetRepository assetRepo = cdiUtil.findBean(
- AssetRepository.class);
- final LegalMetadata legalMetadata = (LegalMetadata) assetRepo
- .findById(legalMetadataId)
- .orElseThrow(() -> new IllegalArgumentException(String.format(
- "No LegalMetadata asset with ID %d in the database.",
- legalMetadataId)));
-
- externalVideoAsset.setLegalMetadata(legalMetadata);
- }
- }
@Override
- protected void updateAsset(final Asset asset,
- final FormSectionEvent event) {
-
- Objects.requireNonNull(asset);
- Objects.requireNonNull(event);
+ protected Map collectData(final FormSectionEvent event)
+ throws FormProcessException {
+ final Map data = new HashMap<>();
final PageState state = event.getPageState();
-
- if (!(asset instanceof ExternalVideoAsset)) {
- throw new IllegalArgumentException(String.format(
- "Provided asset is not an instance of class (or sub class of) "
- + "'%s' but is an instance of class '%s'",
- ExternalVideoAsset.class.getName(),
- asset.getClass().getName()));
+
+ if (assetSearchWidget.getValue(state) != null) {
+ data.put(ExternalAudioAssetFormController.LEGAL_METADATA_ID,
+ assetSearchWidget.getValue(state));
}
- final ExternalVideoAsset externalVideoAsset = (ExternalVideoAsset) asset;
-
- updateData((Bookmark) externalVideoAsset, state);
- updateData(externalVideoAsset, state);
+ return data;
}
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalVideoAssetFormController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalVideoAssetFormController.java
new file mode 100644
index 000000000..adaaf1654
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ExternalVideoAssetFormController.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2019 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.cms.ui.assets.forms;
+
+import com.arsdigita.cms.ui.assets.IsControllerForAssetType;
+
+import org.librecms.assets.ExternalVideoAsset;
+import org.librecms.assets.LegalMetadata;
+import org.librecms.contentsection.AssetRepository;
+
+import java.util.Locale;
+import java.util.Map;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@IsControllerForAssetType(ExternalVideoAsset.class)
+public class ExternalVideoAssetFormController
+ extends AbstractBookmarkFormController {
+
+ protected static final String LEGAL_METADATA_ID = "legalMetadataId";
+
+ @Inject
+ private AssetRepository assetRepository;
+
+ @Override
+ public ExternalVideoAsset createAsset() {
+ return new ExternalVideoAsset();
+ }
+
+ @Transactional(Transactional.TxType.REQUIRED)
+ @Override
+ protected Map getAssetData(final ExternalVideoAsset asset,
+ final Locale selectedLocale) {
+
+ final Map data = super.getAssetData(asset,
+ selectedLocale);
+ if (asset.getLegalMetadata() != null) {
+
+ data.put(LEGAL_METADATA_ID, asset.getLegalMetadata().getObjectId());
+ }
+
+ return data;
+ }
+
+ @Override
+ public void updateAssetProperties(final ExternalVideoAsset asset,
+ final Locale selectedLocale,
+ final Map data) {
+
+ super.updateAssetProperties(asset, selectedLocale, data);
+
+ if (data.containsKey(LEGAL_METADATA_ID)) {
+
+ final long legalMetadataId = (long) data.get(LEGAL_METADATA_ID);
+
+ final LegalMetadata legalMetadata = assetRepository
+ .findById(legalMetadataId, LegalMetadata.class)
+ .orElseThrow(() -> new IllegalArgumentException(String.format(
+ "No LegalMetadata with ID %d found.", legalMetadataId)));
+
+ asset.setLegalMetadata(legalMetadata);
+ }
+ }
+
+}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetForm.java
index a71a7317f..bc01566bb 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetForm.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetForm.java
@@ -18,9 +18,8 @@
*/
package com.arsdigita.cms.ui.assets.forms;
-import com.arsdigita.bebop.PageState;
import com.arsdigita.cms.ui.assets.AssetPane;
-import org.librecms.assets.BinaryAsset;
+
import org.librecms.assets.FileAsset;
/**
@@ -32,17 +31,10 @@ public class FileAssetForm extends AbstractBinaryAssetForm {
public FileAssetForm(final AssetPane assetPane) {
super(assetPane);
}
-
+
@Override
protected Class getAssetClass() {
return FileAsset.class;
}
-
-// @Override
-// protected BinaryAsset createBinaryAsset(final PageState state) {
-// return new FileAsset();
-// }
-
-
-
+
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetFormController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetFormController.java
new file mode 100644
index 000000000..131086bde
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/FileAssetFormController.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2019 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.cms.ui.assets.forms;
+
+import com.arsdigita.cms.ui.assets.IsControllerForAssetType;
+
+import org.librecms.assets.FileAsset;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@IsControllerForAssetType(FileAsset.class)
+public class FileAssetFormController extends AbstractBinaryAssetFormController {
+
+ @Override
+ public FileAsset createAsset() {
+
+ return new FileAsset();
+ }
+
+}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageForm.java
index 490b40171..2ff95c29f 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageForm.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageForm.java
@@ -29,13 +29,12 @@ import com.arsdigita.globalization.GlobalizedMessage;
import org.libreccm.cdi.utils.CdiUtil;
import org.librecms.CmsConstants;
-import org.librecms.assets.BinaryAsset;
import org.librecms.assets.Image;
import org.librecms.assets.LegalMetadata;
import org.librecms.contentsection.Asset;
import org.librecms.contentsection.AssetRepository;
-import java.util.Optional;
+import java.util.Map;
/**
*
@@ -83,24 +82,27 @@ public class ImageForm extends AbstractBinaryAssetForm {
@Override
protected void initForm(final PageState state,
- final Optional selectedAsset) {
+ final Map data) {
- super.initForm(state, selectedAsset);
+ super.initForm(state, data);
- if (selectedAsset.isPresent()) {
+ if (getSelectedAssetId(state) != null) {
- final Image image = selectedAsset.get();
+ if (data.containsKey(ImageFormController.WIDTH)) {
+ final long widthValue = (long) data
+ .get(ImageFormController.WIDTH);
+ width.setValue(state, Long.toString(widthValue));
+ }
+ if (data.containsKey(ImageFormController.HEIGHT)) {
+ final long heightValue = (long) data
+ .get(ImageFormController.HEIGHT);
+ height.setValue(state, Long.toString(heightValue));
+ }
- width.setValue(state,
- Long.toString(image.getWidth()));
- height.setValue(state,
- Long.toString(image.getHeight()));
- final LegalMetadata legalMetadata = image
- .getLegalMetadata();
- if (legalMetadata == null) {
- assetSearchWidget.setValue(state, null);
- } else {
- assetSearchWidget.setValue(state, legalMetadata.getObjectId());
+ if (data.containsKey(ImageFormController.LEGAL_METADATA_ID)) {
+ assetSearchWidget
+ .setValue(state,
+ data.get(ImageFormController.LEGAL_METADATA_ID));
}
}
}
@@ -110,75 +112,22 @@ public class ImageForm extends AbstractBinaryAssetForm {
return Image.class;
}
-// @Override
-// protected Asset createAsset(final FormSectionEvent event)
-// throws FormProcessException {
-//
-// final Image image = (Image) super.createAsset(event);
-//
-// final PageState state = event.getPageState();
-//
-// image.setDisplayName(getTitleValue(state)
-// .toLowerCase()
-// .replace(" ", "-"));
-//
-// if (height.getValue(state) != null) {
-// image.setHeight(Long.parseLong((String) height.getValue(state)));
-// }
-// if (width.getValue(state) != null) {
-// image.setWidth(Long.parseLong((String) width.getValue(state)));
-// }
-// updateData(image, state);
-//
-// return image;
-// }
@Override
- protected void updateAsset(final Asset asset,
- final FormSectionEvent event)
+ protected Map collectData(final FormSectionEvent event)
throws FormProcessException {
- super.updateAsset(asset, event);
-
+ final Map data = super.collectData(event);
final PageState state = event.getPageState();
- final Image image = (Image) asset;
+ data.put(ImageFormController.WIDTH, width.getValue(state));
+ data.put(ImageFormController.HEIGHT, height.getValue(state));
- if (height.getValue(state) == null
- || ((String) height.getValue(state)).trim().isEmpty()) {
- image.setHeight(-1);
- } else {
- image.setHeight(Long.parseLong((String) height.getValue(state)));
- }
- if (width.getValue(state) == null
- || ((String) width.getValue(state)).trim().isEmpty()) {
- image.setWidth(-1);
- } else {
- image.setWidth(Long.parseLong((String) width.getValue(state)));
+ if (assetSearchWidget.getValue(state) != null) {
+ data.put(ImageFormController.LEGAL_METADATA_ID,
+ assetSearchWidget.getValue(state));
}
- updateData(image, state);
+ return data;
}
- protected void updateData(final Image image,
- final PageState state) {
-
- final Long legalMetadataId = (Long) assetSearchWidget.getValue(state);
- if (legalMetadataId != null) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final AssetRepository assetRepo = cdiUtil.findBean(
- AssetRepository.class);
- final LegalMetadata legalMetadata = (LegalMetadata) assetRepo
- .findById(legalMetadataId)
- .orElseThrow(() -> new IllegalArgumentException(String.format(
- "No LegalMetadata asset with ID %d in the database.",
- legalMetadataId)));
-
- image.setLegalMetadata(legalMetadata);
- }
- }
-
-// @Override
-// protected BinaryAsset createBinaryAsset(final PageState state) {
-// return new Image();
-// }
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageFormController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageFormController.java
new file mode 100644
index 000000000..0a66e5b1f
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/ImageFormController.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2019 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.cms.ui.assets.forms;
+
+import com.arsdigita.cms.ui.assets.IsControllerForAssetType;
+
+import org.librecms.assets.Image;
+import org.librecms.assets.LegalMetadata;
+import org.librecms.contentsection.AssetRepository;
+
+import java.util.Locale;
+import java.util.Map;
+
+import javax.enterprise.context.RequestScoped;
+
+import javax.inject.Inject;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@IsControllerForAssetType(Image.class)
+public class ImageFormController
+ extends AbstractBinaryAssetFormController {
+
+ protected static final String LEGAL_METADATA_ID = "legalMetadataId";
+ protected static final String HEIGHT = "height";
+ protected static final String WIDTH = "width";
+
+ @Inject
+ private AssetRepository assetRepository;
+
+ @Override
+ public Image createAsset() {
+ return new Image();
+ }
+
+ @Override
+ protected Map getAssetData(final Image asset,
+ final Locale selectedLocale) {
+
+ final Map data = super.getAssetData(asset,
+ selectedLocale);
+
+ data.put(WIDTH, asset.getWidth());
+ data.put(HEIGHT, asset.getHeight());
+
+ if (asset.getLegalMetadata() != null) {
+ data.put(LEGAL_METADATA_ID,
+ asset.getLegalMetadata().getObjectId());
+ }
+
+ return data;
+ }
+
+ @Override
+ public void updateAssetProperties(final Image asset,
+ final Locale selectedLocale,
+ final Map data) {
+
+ super.updateAssetProperties(asset, selectedLocale, data);
+
+ if (data.containsKey(WIDTH)) {
+ asset.setWidth((long) data.get(WIDTH));
+ }
+
+ if (data.containsKey(HEIGHT)) {
+ asset.setHeight((long) data.get(HEIGHT));
+ }
+
+ if (data.containsKey(LEGAL_METADATA_ID)) {
+ final long legalMetadataId = (long) data.get(LEGAL_METADATA_ID);
+
+ final LegalMetadata legalMetadata = assetRepository
+ .findById(legalMetadataId, LegalMetadata.class)
+ .orElseThrow(() -> new IllegalArgumentException(String.format(
+ "No LegalMetadata with ID %d found.", legalMetadataId)));
+
+ asset.setLegalMetadata(legalMetadata);
+ }
+ }
+
+}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/LegalMetadataForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/LegalMetadataForm.java
index 2795282a6..4f6d4762d 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/LegalMetadataForm.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/LegalMetadataForm.java
@@ -32,6 +32,8 @@ import org.librecms.CmsConstants;
import org.librecms.assets.LegalMetadata;
import org.librecms.contentsection.Asset;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Objects;
import java.util.Optional;
@@ -84,47 +86,36 @@ public class LegalMetadataForm extends AbstractAssetForm {
@Override
protected void initForm(final PageState state,
- final Optional selectedAsset) {
+ final Map data) {
- if (selectedAsset.isPresent()) {
+ if (getSelectedAssetId(state) != null) {
- if (!(selectedAsset.get() instanceof LegalMetadata)) {
- throw new IllegalArgumentException(String.format(
- "The provided asset must be an instanceof of class '%s' or "
- + "an subclass but is an instanceof of class '%s'.",
- LegalMetadata.class.getName(),
- selectedAsset.get().getClass().getName()));
- }
-
- final LegalMetadata legalMetadata = selectedAsset.get();
-
- rightsHolder.setValue(state, legalMetadata.getRightsHolder());
+ rightsHolder.setValue(
+ state,
+ data.get(LegalMetadataFormController.RIGHTS_HOLDER));
rights.setValue(state,
- legalMetadata
- .getRights()
- .getValue(getSelectedLocale(state)));
- publisher.setValue(state, legalMetadata.getPublisher());
- creator.setValue(state, legalMetadata.getCreator());
+ data.get(LegalMetadataFormController.RIGHTS));
+ publisher.setValue(state,
+ data.get(LegalMetadataFormController.PUBLISHER));
+ creator.setValue(state,
+ data.get(LegalMetadataFormController.CREATOR));
}
}
@Override
protected void showLocale(final PageState state) {
- final Optional selectedAsset = getSelectedAsset(state);
+ final Long selectedAssetId = getSelectedAssetId(state);
- if (selectedAsset.isPresent()) {
- if (!(getSelectedAsset(state).get() instanceof LegalMetadata)) {
- throw new IllegalArgumentException(
- "Selected asset is not a legal metadata");
- }
+ if (selectedAssetId != null) {
- final LegalMetadata legalMetadata = selectedAsset.get();
+ final Map data = getController()
+ .getAssetData(selectedAssetId,
+ LegalMetadata.class,
+ getSelectedLocale(state));
rights.setValue(state,
- legalMetadata
- .getRights()
- .getValue(getSelectedLocale(state)));
+ data.get(LegalMetadataFormController.RIGHTS));
}
}
@@ -133,51 +124,21 @@ public class LegalMetadataForm extends AbstractAssetForm {
return LegalMetadata.class;
}
-// @Override
-// protected Asset createAsset(final FormSectionEvent event)
-// throws FormProcessException {
-//
-// Objects.requireNonNull(event);
-//
-// final PageState state = event.getPageState();
-//
-// final LegalMetadata legalMetadata = new LegalMetadata();
-//
-// legalMetadata.setRightsHolder((String) rightsHolder.getValue(state));
-// legalMetadata.getRights().addValue(getSelectedLocale(state),
-// (String) rights.getValue(state));
-//
-// legalMetadata.setPublisher((String) publisher.getValue(state));
-// legalMetadata.setCreator((String) creator.getValue(state));
-//
-// return legalMetadata;
-// }
@Override
- protected void updateAsset(final Asset asset,
- final FormSectionEvent event)
+ protected Map collectData(final FormSectionEvent event)
throws FormProcessException {
- Objects.requireNonNull(asset);
- Objects.requireNonNull(event);
-
final PageState state = event.getPageState();
+ final Map data = new HashMap<>();
- if (!(asset instanceof LegalMetadata)) {
- throw new IllegalArgumentException(String.format(
- "Provided asset is not an instance of '%s' (or a sub class) "
- + "but is an instance of class '%s'.",
- LegalMetadata.class.getName(),
- asset.getClass().getName()));
- }
+ data.put(LegalMetadataFormController.CREATOR, creator.getValue(state));
+ data.put(LegalMetadataFormController.PUBLISHER,
+ publisher.getValue(state));
+ data.put(LegalMetadataFormController.RIGHTS,
+ rights.getValue(state));
+ data.put(LegalMetadataFormController.RIGHTS_HOLDER,
+ rightsHolder.getValue(state));
- final LegalMetadata legalMetadata = (LegalMetadata) asset;
-
- legalMetadata.setRightsHolder((String) rightsHolder.getValue(state));
- legalMetadata.getRights().addValue(getSelectedLocale(state),
- (String) rights.getValue(state));
-
- legalMetadata.setPublisher((String) publisher.getValue(state));
- legalMetadata.setCreator((String) creator.getValue(state));
+ return data;
}
-
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/LegalMetadataFormController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/LegalMetadataFormController.java
new file mode 100644
index 000000000..d98278b47
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/LegalMetadataFormController.java
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2019 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.cms.ui.assets.forms;
+
+import com.arsdigita.cms.ui.assets.AbstractAssetFormController;
+import com.arsdigita.cms.ui.assets.IsControllerForAssetType;
+
+import org.librecms.assets.LegalMetadata;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@IsControllerForAssetType(LegalMetadata.class)
+public class LegalMetadataFormController
+ extends AbstractAssetFormController {
+
+ protected static final String CONTRIBUTORS = "contributors";
+ protected static final String CREATOR = "creator";
+ protected static final String PUBLISHER = "publisher";
+ protected static final String RIGHTS = "rights";
+ protected static final String RIGHTS_HOLDER = "rightsHolder";
+
+ @Override
+ protected Map getAssetData(final LegalMetadata asset,
+ final Locale selectedLocale) {
+
+ final Map data = new HashMap<>();
+
+ data.put(RIGHTS_HOLDER, asset.getRightsHolder());
+ data.put(RIGHTS, asset.getRights().getValue(selectedLocale));
+ data.put(PUBLISHER, asset.getPublisher());
+ data.put(CREATOR, asset.getCreator());
+ data.put(CONTRIBUTORS, asset.getContributors());
+
+ return data;
+ }
+
+ @Override
+ public void updateAssetProperties(final LegalMetadata asset,
+ final Locale selectedLocale,
+ final Map data) {
+
+ if (data.containsKey(RIGHTS_HOLDER)) {
+ asset.setRightsHolder((String) data.get(RIGHTS_HOLDER));
+ }
+
+ if (data.containsKey(RIGHTS)) {
+ asset.getRights().addValue(selectedLocale,
+ (String) data.get(RIGHTS));
+ }
+
+ if (data.containsKey(PUBLISHER)) {
+ asset.setPublisher((String) data.get(PUBLISHER));
+ }
+
+ if (data.containsKey(CREATOR)) {
+ asset.setCreator((String) data.get(CREATOR));
+ }
+
+ if (data.containsKey(CONTRIBUTORS)) {
+ @SuppressWarnings("unchecked")
+ final List contributors = (List) data
+ .get(CONTRIBUTORS);
+ asset.setContributors(contributors);
+ }
+ }
+
+ @Override
+ public LegalMetadata createAsset() {
+ return new LegalMetadata();
+ }
+
+}
+
\ No newline at end of file
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/OrganizationForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/OrganizationForm.java
index b99438ff9..fb6248a5f 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/OrganizationForm.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/OrganizationForm.java
@@ -28,10 +28,9 @@ import com.arsdigita.globalization.GlobalizedMessage;
import org.librecms.CmsConstants;
import org.librecms.assets.Organization;
-import org.librecms.contentsection.Asset;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.HashMap;
+import java.util.Map;
/**
*
@@ -47,20 +46,19 @@ public class OrganizationForm extends AbstractContactableEntityForm selected = getSelectedAsset(state);
-
- if (selected.isPresent()) {
-
- organizationName.setValue(state, selected.get().getName());
+ public void initForm(final PageState state,
+ final Map data) {
+
+ super.initForm(state, data);
+
+ if (getSelectedAssetId(state) != null) {
+
+ organizationName.setValue(
+ state,
+ data.get(OrganizationFormController.ORGANIZATION_NAME));
}
}
-
+
@Override
protected void addPropertyWidgets() {
@@ -84,26 +82,16 @@ public class OrganizationForm extends AbstractContactableEntityForm collectData(final FormSectionEvent event)
throws FormProcessException {
- Objects.requireNonNull(asset);
- Objects.requireNonNull(event);
-
final PageState state = event.getPageState();
- if (!(asset instanceof Organization)) {
- throw new IllegalArgumentException(String.format(
- "The provided asset is not an instance of \"%s\" "
- + "or a subclass,but of %s.",
- Organization.class.getName(),
- asset.getClass().getName()));
- }
+ final Map data = new HashMap<>();
+ data.put(OrganizationFormController.ORGANIZATION_NAME,
+ organizationName.getValue(state));
- final Organization organization = (Organization) asset;
-
- organization.setName((String) organizationName.getValue(state));
+ return data;
}
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/OrganizationFormController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/OrganizationFormController.java
new file mode 100644
index 000000000..a40cba1e1
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/OrganizationFormController.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2019 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.cms.ui.assets.forms;
+
+import com.arsdigita.cms.ui.assets.IsControllerForAssetType;
+
+import org.librecms.assets.Organization;
+
+import java.util.Locale;
+import java.util.Map;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@IsControllerForAssetType(Organization.class)
+public class OrganizationFormController
+ extends AbstractContactableEntityFormController {
+
+ protected static final String ORGANIZATION_NAME = "organizationName";
+
+ @Override
+ protected Map getAssetData(final Organization asset,
+ final Locale selectedLocale) {
+
+ final Map data = super.getAssetData(asset,
+ selectedLocale);
+ data.put(ORGANIZATION_NAME, asset.getName());
+
+ return data;
+ }
+
+ @Override
+ public void updateAssetProperties(final Organization asset,
+ final Locale selectedLocale,
+ final Map data) {
+
+ super.updateAssetProperties(asset, selectedLocale, data);
+
+ if (data.containsKey(ORGANIZATION_NAME)) {
+ final String organizationName = (String) data.get(ORGANIZATION_NAME);
+ asset.setName(organizationName);
+ }
+ }
+
+ @Override
+ public Organization createAsset() {
+ return new Organization();
+ }
+
+}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/SideNoteForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/SideNoteForm.java
index 7887aa3ed..d24416cf9 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/SideNoteForm.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/SideNoteForm.java
@@ -27,12 +27,11 @@ import com.arsdigita.cms.ui.assets.AbstractAssetForm;
import com.arsdigita.cms.ui.assets.AssetPane;
import com.arsdigita.globalization.GlobalizedMessage;
-import java.util.Objects;
-import java.util.Optional;
-
import org.librecms.CmsConstants;
import org.librecms.assets.SideNote;
-import org.librecms.contentsection.Asset;
+
+import java.util.HashMap;
+import java.util.Map;
/**
*
@@ -57,23 +56,11 @@ public class SideNoteForm extends AbstractAssetForm {
@Override
protected void initForm(final PageState state,
- final Optional selectedAsset) {
+ final Map data) {
- if (selectedAsset.isPresent()) {
- if (!(selectedAsset.get() instanceof SideNote)) {
- throw new IllegalArgumentException(String.format(
- "The provided asset must be an instance of '%s' or"
- + "an subclass but is an instance of '%s'",
- SideNote.class.getName(),
- selectedAsset.get().getClass().getName()));
- }
+ if (getSelectedAssetId(state) != null) {
- final SideNote sideNote = selectedAsset.get();
-
- text.setValue(state,
- sideNote
- .getText()
- .getValue(getSelectedLocale(state)));
+ text.setValue(state, data.get(SideNoteFormController.TEXT));
}
}
@@ -81,23 +68,15 @@ public class SideNoteForm extends AbstractAssetForm {
@Override
protected void showLocale(final PageState state) {
- final Optional selectedAsset = getSelectedAsset(state);
+ if (getSelectedAssetId(state) != null) {
- if (selectedAsset.isPresent()) {
- if (!(selectedAsset.get() instanceof SideNote)) {
- throw new IllegalArgumentException(String.format(
- "The provided asset must be an instance of '%s' or"
- + "an subclass but is an instance of '%s'",
- SideNote.class.getName(),
- selectedAsset.get().getClass().getName()));
- }
+ final Long selectedAssetId = getSelectedAssetId(state);
+ final Map data = getController()
+ .getAssetData(selectedAssetId,
+ SideNote.class,
+ getSelectedLocale(state));
- final SideNote sideNote =selectedAsset.get();
-
- text.setValue(state,
- sideNote
- .getText()
- .getValue(getSelectedLocale(state)));
+ text.setValue(state, data.get(SideNoteFormController.TEXT));
}
}
@@ -106,50 +85,16 @@ public class SideNoteForm extends AbstractAssetForm {
return SideNote.class;
}
-
-
-// @Override
-// protected Asset createAsset(final FormSectionEvent event) throws
-// FormProcessException {
-//
-// Objects.requireNonNull(event);
-//
-// final PageState state = event.getPageState();
-//
-// final SideNote sideNote = new SideNote();
-//
-// sideNote
-// .getText()
-// .addValue(getSelectedLocale(state),
-// (String) text.getValue(state));
-//
-// return sideNote;
-// }
-
@Override
- protected void updateAsset(final Asset asset,
- final FormSectionEvent event)
- throws FormProcessException {
+ protected Map collectData(final FormSectionEvent event)
+ throws FormProcessException {
- Objects.requireNonNull(asset);
- Objects.requireNonNull(event);
-
+ final Map data = new HashMap<>();
final PageState state = event.getPageState();
- if (!(asset instanceof SideNote)) {
- throw new IllegalArgumentException(String.format(
- "The provided asset must be an instance of '%s' or"
- + "an subclass but is an instance of '%s'",
- SideNote.class.getName(),
- asset.getClass().getName()));
- }
+ data.put(SideNoteFormController.TEXT, text.getValue(state));
- final SideNote sideNote = (SideNote) asset;
-
- sideNote
- .getText()
- .addValue(getSelectedLocale(state),
- (String) text.getValue(state));
+ return data;
}
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/SideNoteFormController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/SideNoteFormController.java
new file mode 100644
index 000000000..648087c23
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/SideNoteFormController.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2019 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.cms.ui.assets.forms;
+
+import com.arsdigita.cms.ui.assets.AbstractAssetFormController;
+import com.arsdigita.cms.ui.assets.IsControllerForAssetType;
+
+import org.librecms.assets.SideNote;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import javax.enterprise.context.RequestScoped;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@IsControllerForAssetType(SideNote.class)
+public class SideNoteFormController
+ extends AbstractAssetFormController {
+
+ protected static final String TEXT = "text";
+
+ @Override
+ protected Map getAssetData(final SideNote asset,
+ final Locale selectedLocale) {
+
+ final Map data = new HashMap<>();
+
+ data.put(TEXT, asset.getText().getValue(selectedLocale));
+
+ return data;
+ }
+
+ @Override
+ public void updateAssetProperties(final SideNote asset,
+ final Locale selectedLocale,
+ final Map data) {
+
+ if (data.containsKey(TEXT)) {
+
+ final String value = (String) data.get(TEXT);
+ asset.getText().addValue(selectedLocale, value);
+ }
+
+ }
+
+ @Override
+ public SideNote createAsset() {
+ return new SideNote();
+ }
+
+}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/VideoForm.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/VideoForm.java
index 7131d6c7e..daf93a7a1 100644
--- a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/VideoForm.java
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/VideoForm.java
@@ -34,13 +34,13 @@ import org.librecms.assets.LegalMetadata;
import org.librecms.contentsection.Asset;
import org.librecms.contentsection.AssetRepository;
-import java.util.Optional;
+import java.util.Map;
/**
*
* @author Yannick Bülter
* @author Jens Pelzetter
- *
+ *
*/
public class VideoForm extends AbstractBinaryAssetForm {
@@ -57,45 +57,49 @@ public class VideoForm extends AbstractBinaryAssetForm {
width = new TextField("width-text");
height = new TextField("height-text");
- assetSearchWidget = new AssetSearchWidget("legal-metadata", LegalMetadata.class);
+ assetSearchWidget = new AssetSearchWidget("legal-metadata",
+ LegalMetadata.class);
add(new Label(new GlobalizedMessage(
- "cms.ui.assets.video.width.label",
- CmsConstants.CMS_BUNDLE
+ "cms.ui.assets.video.width.label",
+ CmsConstants.CMS_BUNDLE
)));
add(width);
add(new Label(new GlobalizedMessage(
- "cms.ui.assets.video.height.label",
- CmsConstants.CMS_BUNDLE
+ "cms.ui.assets.video.height.label",
+ CmsConstants.CMS_BUNDLE
)));
add(height);
add(new Label(new GlobalizedMessage(
- "cms.ui.assets.video.legal_metadata.label",
- CmsConstants.CMS_BUNDLE
+ "cms.ui.assets.video.legal_metadata.label",
+ CmsConstants.CMS_BUNDLE
)));
add(assetSearchWidget);
}
@Override
- protected void initForm(final PageState state,
- final Optional selectedAsset) {
+ protected void initForm(final PageState state,
+ final Map data) {
- super.initForm(state, selectedAsset);
+ super.initForm(state, data);
- if (selectedAsset.isPresent()) {
+ if (getSelectedAssetId(state) != null) {
- final VideoAsset video = selectedAsset.get();
+ final long widthValue = (long) data.get(VideoFormController.WIDTH);
+ final long heightValue = (long) data
+ .get(VideoFormController.HEIGHT);
+
+ width.setValue(state, Long.toString(widthValue));
+ height.setValue(state, Long.toString(heightValue));
+
+ if (data.containsKey(VideoFormController.LEGAL_METADATA_ID)) {
+
+ assetSearchWidget.setValue(
+ state,
+ data.containsKey(VideoFormController.LEGAL_METADATA_ID));
- width.setValue(state,
- Long.toString(video.getWidth()));
- height.setValue(state,
- Long.toString(video.getHeight()));
- final LegalMetadata legalMetadata = video
- .getLegalMetadata();
- if (legalMetadata != null) {
- assetSearchWidget.setValue(state, legalMetadata.getObjectId());
}
}
}
@@ -105,60 +109,25 @@ public class VideoForm extends AbstractBinaryAssetForm {
return VideoAsset.class;
}
-
-
-// @Override
-// protected Asset createAsset(final FormSectionEvent event)
-// throws FormProcessException {
-//
-// final VideoAsset video = (VideoAsset) super.createAsset(event);
-//
-// final PageState state = event.getPageState();
-//
-// video.setHeight(Long.parseLong((String) height.getValue(state)));
-// video.setWidth(Long.parseLong((String) width.getValue(state)));
-// updateData(video, state);
-//
-// return video;
-// }
-
@Override
- protected void updateAsset(final Asset asset,
- final FormSectionEvent event)
- throws FormProcessException {
-
- super.updateAsset(asset, event);
+ protected Map collectData(final FormSectionEvent event)
+ throws FormProcessException {
final PageState state = event.getPageState();
- final VideoAsset video = (VideoAsset) asset;
+ final Map data = super.collectData(event);
- video.setHeight(Long.parseLong((String) height.getValue(state)));
- video.setWidth(Long.parseLong((String) width.getValue(state)));
+ data.put(VideoFormController.WIDTH, width.getValue(state));
+ data.put(VideoFormController.HEIGHT, height.getValue(state));
- updateData(video, state);
- }
+ if (assetSearchWidget.getValue(state) != null) {
- protected void updateData(final VideoAsset video,
- final PageState state) {
+ data.put(VideoFormController.LEGAL_METADATA_ID,
+ assetSearchWidget.getValue(state));
- final Long legalMetadataId = (Long) assetSearchWidget.getValue(state);
- if (legalMetadataId != null) {
- final CdiUtil cdiUtil = CdiUtil.createCdiUtil();
- final AssetRepository assetRepo = cdiUtil.findBean(
- AssetRepository.class);
- final LegalMetadata legalMetadata = (LegalMetadata) assetRepo
- .findById(legalMetadataId)
- .orElseThrow(() -> new IllegalArgumentException(String.format(
- "No LegalMetadata asset with ID %d in the database.",
- legalMetadataId)));
-
- video.setLegalMetadata(legalMetadata);
}
+
+ return data;
}
-// @Override
-// protected BinaryAsset createBinaryAsset(final PageState state) {
-// return new VideoAsset();
-// }
}
diff --git a/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/VideoFormController.java b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/VideoFormController.java
new file mode 100644
index 000000000..4103999d7
--- /dev/null
+++ b/ccm-cms/src/main/java/com/arsdigita/cms/ui/assets/forms/VideoFormController.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2019 LibreCCM Foundation.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301 USA
+ */
+package com.arsdigita.cms.ui.assets.forms;
+
+import com.arsdigita.cms.ui.assets.IsControllerForAssetType;
+import com.arsdigita.cms.ui.assets.forms.AbstractBinaryAssetFormController;
+
+import org.librecms.contentsection.AssetRepository;
+
+import java.util.Locale;
+import java.util.Map;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+
+import org.librecms.assets.LegalMetadata;
+import org.librecms.assets.VideoAsset;
+
+/**
+ *
+ * @author Jens Pelzetter
+ */
+@RequestScoped
+@IsControllerForAssetType(VideoAsset.class)
+public class VideoFormController
+ extends AbstractBinaryAssetFormController {
+
+ protected static final String LEGAL_METADATA_ID = "legalMetadataId";
+ protected static final String HEIGHT = "height";
+ protected static final String WIDTH = "width";
+
+ @Inject
+ private AssetRepository assetRepository;
+
+ @Override
+ protected Map getAssetData(final VideoAsset asset,
+ final Locale selectedLocale) {
+
+ final Map data = super.getAssetData(asset,
+ selectedLocale);
+
+ data.put(WIDTH, asset.getWidth());
+ data.put(HEIGHT, asset.getHeight());
+
+ if (asset.getLegalMetadata() != null) {
+ final long legalMetadataId = asset.getLegalMetadata().getObjectId();
+ data.put(LEGAL_METADATA_ID, legalMetadataId);
+ }
+
+ return data;
+ }
+
+ @Override
+ public void updateAssetProperties(final VideoAsset asset,
+ final Locale selectedLocale,
+ final Map data) {
+
+ super.updateAssetProperties(asset, selectedLocale, data);
+
+ if (data.containsKey(WIDTH)) {
+ final long width = (long) data.get(WIDTH);
+ asset.setWidth(width);
+ }
+
+ if (data.containsKey(HEIGHT)) {
+ final long height = (long) data.get(HEIGHT);
+ asset.setHeight(height);
+ }
+
+ if (data.containsKey(LEGAL_METADATA_ID)) {
+
+ final LegalMetadata legalMetadata = assetRepository
+ .findById((long) data.get(LEGAL_METADATA_ID),
+ LegalMetadata.class)
+ .orElseThrow(() -> new IllegalArgumentException(String.format(
+ "No LegalMetadata with ID %d found",
+ data.get(LEGAL_METADATA_ID)
+ )));
+ asset.setLegalMetadata(legalMetadata);
+ }
+ }
+
+ @Override
+ public VideoAsset createAsset() {
+ return new VideoAsset();
+ }
+
+}