Aktuller Stand CSV Importer für Publikationen
git-svn-id: https://svn.libreccm.org/ccm/trunk@1932 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
20dc430d32
commit
6498c02337
|
|
@ -6,9 +6,6 @@ import com.arsdigita.bebop.FormProcessException;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
import com.arsdigita.bebop.event.PrintEvent;
|
|
||||||
import com.arsdigita.bebop.event.PrintListener;
|
|
||||||
import com.arsdigita.bebop.form.Option;
|
|
||||||
import com.arsdigita.bebop.form.SingleSelect;
|
import com.arsdigita.bebop.form.SingleSelect;
|
||||||
import com.arsdigita.bebop.parameters.DateParameter;
|
import com.arsdigita.bebop.parameters.DateParameter;
|
||||||
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
||||||
|
|
@ -18,28 +15,23 @@ import com.arsdigita.cms.ContentItem;
|
||||||
import com.arsdigita.cms.ContentPage;
|
import com.arsdigita.cms.ContentPage;
|
||||||
import com.arsdigita.cms.ContentSection;
|
import com.arsdigita.cms.ContentSection;
|
||||||
import com.arsdigita.cms.ContentType;
|
import com.arsdigita.cms.ContentType;
|
||||||
import com.arsdigita.cms.ContentTypeCollection;
|
|
||||||
import com.arsdigita.cms.Folder;
|
import com.arsdigita.cms.Folder;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
import com.arsdigita.cms.contenttypes.GenericPerson;
|
import com.arsdigita.cms.contenttypes.GenericPerson;
|
||||||
import com.arsdigita.cms.contenttypes.PublicPersonalProfile;
|
import com.arsdigita.cms.contenttypes.PublicPersonalProfile;
|
||||||
import com.arsdigita.cms.contenttypes.PublicPersonalProfileBundle;
|
import com.arsdigita.cms.contenttypes.PublicPersonalProfileBundle;
|
||||||
import com.arsdigita.cms.publicpersonalprofile.PublicPersonalProfileConfig;
|
|
||||||
import com.arsdigita.cms.publicpersonalprofile.PublicPersonalProfiles;
|
|
||||||
import com.arsdigita.cms.ui.authoring.ApplyWorkflowFormSection;
|
import com.arsdigita.cms.ui.authoring.ApplyWorkflowFormSection;
|
||||||
|
import com.arsdigita.cms.ui.authoring.BasicPageForm;
|
||||||
import com.arsdigita.cms.ui.authoring.CreationSelector;
|
import com.arsdigita.cms.ui.authoring.CreationSelector;
|
||||||
import com.arsdigita.cms.ui.authoring.LanguageWidget;
|
import com.arsdigita.cms.ui.authoring.LanguageWidget;
|
||||||
import com.arsdigita.cms.ui.authoring.PageCreate;
|
import com.arsdigita.cms.ui.authoring.PageCreate;
|
||||||
import com.arsdigita.cms.util.GlobalizationUtil;
|
import com.arsdigita.cms.util.GlobalizationUtil;
|
||||||
import com.arsdigita.domain.DomainObjectFactory;
|
|
||||||
import com.arsdigita.persistence.DataCollection;
|
import com.arsdigita.persistence.DataCollection;
|
||||||
import com.arsdigita.persistence.SessionManager;
|
import com.arsdigita.persistence.SessionManager;
|
||||||
import com.arsdigita.util.Assert;
|
import com.arsdigita.util.Assert;
|
||||||
import com.arsdigita.util.UncheckedWrapperException;
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
|
||||||
import java.util.TooManyListenersException;
|
import java.util.TooManyListenersException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -50,11 +42,9 @@ import java.util.TooManyListenersException;
|
||||||
*/
|
*/
|
||||||
public class PublicPersonalProfileCreate extends PageCreate {
|
public class PublicPersonalProfileCreate extends PageCreate {
|
||||||
|
|
||||||
private static final String SELECTED_PERSON = "selectedPerson";
|
//private static final String SELECTED_PERSON = "selectedPerson";
|
||||||
private static final PublicPersonalProfileConfig config =
|
//private static final PublicPersonalProfileConfig config =
|
||||||
PublicPersonalProfiles.
|
// PublicPersonalProfiles. getConfig();
|
||||||
getConfig();
|
|
||||||
|
|
||||||
public PublicPersonalProfileCreate(final ItemSelectionModel itemModel,
|
public PublicPersonalProfileCreate(final ItemSelectionModel itemModel,
|
||||||
final CreationSelector parent) {
|
final CreationSelector parent) {
|
||||||
super(itemModel, parent);
|
super(itemModel, parent);
|
||||||
|
|
@ -64,7 +54,7 @@ public class PublicPersonalProfileCreate extends PageCreate {
|
||||||
public void addWidgets() {
|
public void addWidgets() {
|
||||||
//super.addWidgets();
|
//super.addWidgets();
|
||||||
|
|
||||||
ContentType type = getItemSelectionModel().getContentType();
|
final ContentType type = getItemSelectionModel().getContentType();
|
||||||
m_workflowSection = new ApplyWorkflowFormSection(type);
|
m_workflowSection = new ApplyWorkflowFormSection(type);
|
||||||
add(m_workflowSection, ColumnPanel.INSERT);
|
add(m_workflowSection, ColumnPanel.INSERT);
|
||||||
add(new Label(GlobalizationUtil.globalize(
|
add(new Label(GlobalizationUtil.globalize(
|
||||||
|
|
@ -73,70 +63,69 @@ public class PublicPersonalProfileCreate extends PageCreate {
|
||||||
add(new Label(GlobalizationUtil.globalize("cms.ui.language.field")));
|
add(new Label(GlobalizationUtil.globalize("cms.ui.language.field")));
|
||||||
add(new LanguageWidget(LANGUAGE));
|
add(new LanguageWidget(LANGUAGE));
|
||||||
|
|
||||||
add(new Label(PublicPersonalProfileGlobalizationUtil.globalize(
|
add(new Label(PublicPersonalProfileGlobalizationUtil.globalize("publicpersonalprofile.ui.create.select_person")));
|
||||||
"publicpersonalprofile.ui.create.select_person")));
|
final ParameterModel ownerModel = new StringParameter(PublicPersonalProfileBundle.OWNER);
|
||||||
ParameterModel ownerModel =
|
final SingleSelect ownerSelect = new SingleSelect(ownerModel);
|
||||||
new StringParameter(PublicPersonalProfileBundle.OWNER);
|
|
||||||
SingleSelect ownerSelect = new SingleSelect(ownerModel);
|
|
||||||
ownerSelect.addValidationListener(new NotNullValidationListener());
|
ownerSelect.addValidationListener(new NotNullValidationListener());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
ownerSelect.addPrintListener(new PrintListener() {
|
ownerSelect.addPrintListener(new PPPOwnerSelectPrintListener());
|
||||||
|
// ownerSelect.addPrintListener(new PrintListener() {
|
||||||
public void prepare(final PrintEvent event) {
|
//
|
||||||
final SingleSelect ownerSelect = (SingleSelect) event.
|
// public void prepare(final PrintEvent event) {
|
||||||
getTarget();
|
// final SingleSelect ownerSelect = (SingleSelect) event.
|
||||||
|
// getTarget();
|
||||||
String personType = config.getPersonType();
|
//
|
||||||
if ((personType == null) || (personType.isEmpty())) {
|
// String personType = config.getPersonType();
|
||||||
personType =
|
// if ((personType == null) || (personType.isEmpty())) {
|
||||||
"com.arsdigita.cms.contenttypes.GenericPerson";
|
// personType =
|
||||||
}
|
// "com.arsdigita.cms.contenttypes.GenericPerson";
|
||||||
|
// }
|
||||||
ContentTypeCollection types =
|
//
|
||||||
ContentType.getAllContentTypes();
|
// ContentTypeCollection types =
|
||||||
types.addFilter(
|
// ContentType.getAllContentTypes();
|
||||||
String.format("className = '%s'", personType));
|
// types.addFilter(
|
||||||
if (types.size() == 0) {
|
// String.format("className = '%s'", personType));
|
||||||
personType =
|
// if (types.size() == 0) {
|
||||||
"com.arsdigita.cms.contenttypes.GenericPerson";
|
// personType =
|
||||||
}
|
// "com.arsdigita.cms.contenttypes.GenericPerson";
|
||||||
DataCollection persons = SessionManager.getSession().
|
// }
|
||||||
retrieve(
|
// DataCollection persons = SessionManager.getSession().
|
||||||
personType);
|
// retrieve(
|
||||||
//persons.addFilter("profile is null");
|
// personType);
|
||||||
persons.addFilter(String.format("version = '%s'",
|
// //persons.addFilter("profile is null");
|
||||||
ContentItem.DRAFT));
|
// persons.addFilter(String.format("version = '%s'",
|
||||||
persons.addOrder("surname asc");
|
// ContentItem.DRAFT));
|
||||||
persons.addOrder("givenname asc");
|
// persons.addOrder("surname asc");
|
||||||
persons.addOrder("language asc");
|
// persons.addOrder("givenname asc");
|
||||||
ownerSelect.addOption(new Option("", ""));
|
// persons.addOrder("language asc");
|
||||||
|
// ownerSelect.addOption(new Option("", ""));
|
||||||
//Store the parent ids of processed items to remove double entries.
|
//
|
||||||
final List<BigDecimal> processed =
|
// //Store the parent ids of processed items to remove double entries.
|
||||||
new ArrayList<BigDecimal>();
|
// final List<BigDecimal> processed =
|
||||||
while (persons.next()) {
|
// new ArrayList<BigDecimal>();
|
||||||
GenericPerson person =
|
// while (persons.next()) {
|
||||||
(GenericPerson) DomainObjectFactory.
|
// GenericPerson person =
|
||||||
newInstance(persons.getDataObject());
|
// (GenericPerson) DomainObjectFactory.
|
||||||
if (processed.contains(person.getParent().getID())) {
|
// newInstance(persons.getDataObject());
|
||||||
continue;
|
// if (processed.contains(person.getParent().getID())) {
|
||||||
} else {
|
// continue;
|
||||||
if (person.getGenericPersonBundle().get("profile")
|
// } else {
|
||||||
== null) {
|
// if (person.getGenericPersonBundle().get("profile")
|
||||||
continue;
|
// == null) {
|
||||||
} else {
|
// continue;
|
||||||
ownerSelect.addOption(new Option(
|
// } else {
|
||||||
person.getID().toString(),
|
// ownerSelect.addOption(new Option(
|
||||||
String.format("%s (%s)",
|
// person.getID().toString(),
|
||||||
person.getFullName(),
|
// String.format("%s (%s)",
|
||||||
person.getLanguage())));
|
// person.getFullName(),
|
||||||
processed.add(person.getParent().getID());
|
// person.getLanguage())));
|
||||||
}
|
// processed.add(person.getParent().getID());
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
});
|
// }
|
||||||
|
// });
|
||||||
} catch (TooManyListenersException ex) {
|
} catch (TooManyListenersException ex) {
|
||||||
throw new UncheckedWrapperException(ex);
|
throw new UncheckedWrapperException(ex);
|
||||||
}
|
}
|
||||||
|
|
@ -146,10 +135,8 @@ public class PublicPersonalProfileCreate extends PageCreate {
|
||||||
if (!ContentSection.getConfig().getHideLaunchDate()) {
|
if (!ContentSection.getConfig().getHideLaunchDate()) {
|
||||||
add(new Label(GlobalizationUtil.globalize(
|
add(new Label(GlobalizationUtil.globalize(
|
||||||
"cms.ui.authoring.page_launch_date")));
|
"cms.ui.authoring.page_launch_date")));
|
||||||
ParameterModel launchDateParam = new DateParameter(LAUNCH_DATE);
|
final ParameterModel launchDateParam = new DateParameter(LAUNCH_DATE);
|
||||||
com.arsdigita.bebop.form.Date launchDate =
|
final com.arsdigita.bebop.form.Date launchDate = new com.arsdigita.bebop.form.Date(launchDateParam);
|
||||||
new com.arsdigita.bebop.form.Date(
|
|
||||||
launchDateParam);
|
|
||||||
if (ContentSection.getConfig().getRequireLaunchDate()) {
|
if (ContentSection.getConfig().getRequireLaunchDate()) {
|
||||||
launchDate.addValidationListener(
|
launchDate.addValidationListener(
|
||||||
new LaunchDateValidationListener());
|
new LaunchDateValidationListener());
|
||||||
|
|
@ -160,35 +147,33 @@ public class PublicPersonalProfileCreate extends PageCreate {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ensure name uniqueness. Note: We can't call {@code super.validate(FormSectionEvent)} here
|
* Ensure name uniqueness. Note: We can't call {@code super.validate(FormSectionEvent)} here
|
||||||
* because the super method {@link BasicPageForm#validate(com.arsdigita.bebop.event.FormSectionEvent)} tries
|
* because the super method {@link BasicPageForm#validate(com.arsdigita.bebop.event.FormSectionEvent)} tries
|
||||||
* to access things which on existing yet.
|
* to access properties which are not set yet.
|
||||||
|
*
|
||||||
|
* @param fse
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void validate(FormSectionEvent fse) throws FormProcessException {
|
public void validate(final FormSectionEvent fse) throws FormProcessException {
|
||||||
Folder folder = m_parent.getFolder(fse.getPageState());
|
final Folder folder = m_parent.getFolder(fse.getPageState());
|
||||||
Assert.exists(folder);
|
Assert.exists(folder);
|
||||||
String id = (String) fse.getFormData().get(
|
final String personId = (String) fse.getFormData().get(PublicPersonalProfileBundle.OWNER);
|
||||||
PublicPersonalProfileBundle.OWNER);
|
|
||||||
|
|
||||||
if ((id == null) || id.trim().isEmpty()) {
|
if ((personId == null) || personId.trim().isEmpty()) {
|
||||||
fse.getFormData().addError(PublicPersonalProfileGlobalizationUtil.
|
fse.getFormData().addError(PublicPersonalProfileGlobalizationUtil.globalize(
|
||||||
globalize("publicpersonalprofile.ui.person.required"));
|
"publicpersonalprofile.ui.person.required"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GenericPerson owner = new GenericPerson(new BigDecimal(id));
|
final GenericPerson owner = new GenericPerson(new BigDecimal(personId));
|
||||||
|
|
||||||
validateNameUniqueness(folder,
|
validateNameUniqueness(folder, fse, String.format("%s-profile",
|
||||||
fse,
|
GenericPerson.urlSave(owner.getFullName())));
|
||||||
String.format("%s-profile",
|
|
||||||
GenericPerson.urlSave(
|
|
||||||
owner.getFullName())));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(FormSectionEvent fse) throws FormProcessException {
|
public void process(final FormSectionEvent fse) throws FormProcessException {
|
||||||
final FormData data = fse.getFormData();
|
final FormData data = fse.getFormData();
|
||||||
final PageState state = fse.getPageState();
|
final PageState state = fse.getPageState();
|
||||||
final ContentSection section = m_parent.getContentSection(state);
|
final ContentSection section = m_parent.getContentSection(state);
|
||||||
|
|
@ -196,13 +181,12 @@ public class PublicPersonalProfileCreate extends PageCreate {
|
||||||
|
|
||||||
Assert.exists(section, ContentSection.class);
|
Assert.exists(section, ContentSection.class);
|
||||||
|
|
||||||
String id = (String) fse.getFormData().get(
|
final String personId = (String) fse.getFormData().get(PublicPersonalProfileBundle.OWNER);
|
||||||
PublicPersonalProfileBundle.OWNER);
|
|
||||||
|
|
||||||
GenericPerson owner = new GenericPerson(new BigDecimal(id));
|
final GenericPerson owner = new GenericPerson(new BigDecimal(personId));
|
||||||
String name = String.format("%s-profile",
|
final String name = String.format("%s-profile",
|
||||||
GenericPerson.urlSave(owner.getFullName()));
|
GenericPerson.urlSave(owner.getFullName()));
|
||||||
String title = String.format("%s (Profil)", owner.getFullName());
|
final String title = String.format("%s (Profil)", owner.getFullName());
|
||||||
|
|
||||||
final ContentPage item = createContentPage(state);
|
final ContentPage item = createContentPage(state);
|
||||||
item.setLanguage((String) data.get(LANGUAGE));
|
item.setLanguage((String) data.get(LANGUAGE));
|
||||||
|
|
@ -219,9 +203,8 @@ public class PublicPersonalProfileCreate extends PageCreate {
|
||||||
|
|
||||||
m_workflowSection.applyWorkflow(state, item);
|
m_workflowSection.applyWorkflow(state, item);
|
||||||
|
|
||||||
PublicPersonalProfile profile = new PublicPersonalProfile(item.getOID());
|
final PublicPersonalProfile profile = new PublicPersonalProfile(item.getOID());
|
||||||
profile.setOwner(owner);
|
profile.setOwner(owner);
|
||||||
//profile.setProfileUrl(owner.getSurname().toLowerCase());
|
|
||||||
profile.setProfileUrl(createProfileUrl(owner));
|
profile.setProfileUrl(createProfileUrl(owner));
|
||||||
profile.save();
|
profile.save();
|
||||||
|
|
||||||
|
|
@ -230,27 +213,23 @@ public class PublicPersonalProfileCreate extends PageCreate {
|
||||||
|
|
||||||
private String createProfileUrl(final GenericPerson owner) {
|
private String createProfileUrl(final GenericPerson owner) {
|
||||||
String profileUrl = owner.getSurname().toLowerCase();
|
String profileUrl = owner.getSurname().toLowerCase();
|
||||||
int i = 1;
|
int counter = 1;
|
||||||
|
|
||||||
DataCollection profiles = SessionManager.getSession().retrieve(
|
final DataCollection profiles = SessionManager.getSession().
|
||||||
PublicPersonalProfile.BASE_DATA_OBJECT_TYPE);
|
retrieve(PublicPersonalProfile.BASE_DATA_OBJECT_TYPE);
|
||||||
profiles.addFilter(String.format("profileUrl = '%s'",
|
profiles.addFilter(String.format("profileUrl = '%s'", profileUrl));
|
||||||
profileUrl));
|
|
||||||
profiles.addFilter(String.format("version = '%s'", ContentItem.DRAFT));
|
profiles.addFilter(String.format("version = '%s'", ContentItem.DRAFT));
|
||||||
|
|
||||||
while (profiles.size() > 0) {
|
while (profiles.size() > 0) {
|
||||||
i++;
|
counter++;
|
||||||
|
|
||||||
profileUrl = String.format("%s%d",
|
profileUrl = String.format("%s%d", owner.getSurname().toLowerCase(), counter);
|
||||||
owner.getSurname().toLowerCase(),
|
|
||||||
i);
|
|
||||||
profiles.reset();
|
profiles.reset();
|
||||||
profiles.addFilter(String.format("profileUrl = '%s'",
|
profiles.addFilter(String.format("profileUrl = '%s'", profileUrl));
|
||||||
profileUrl));
|
profiles.addFilter(String.format("version = '%s'", ContentItem.DRAFT));
|
||||||
profiles.addFilter(
|
|
||||||
String.format("version = '%s'", ContentItem.DRAFT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return GenericPerson.urlSave(profileUrl).toLowerCase();
|
return GenericPerson.urlSave(profileUrl).toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,34 +3,42 @@ package com.arsdigita.cms.contenttypes.ui;
|
||||||
import com.arsdigita.bebop.FormData;
|
import com.arsdigita.bebop.FormData;
|
||||||
import com.arsdigita.bebop.FormProcessException;
|
import com.arsdigita.bebop.FormProcessException;
|
||||||
import com.arsdigita.bebop.Label;
|
import com.arsdigita.bebop.Label;
|
||||||
import com.arsdigita.bebop.form.TextField;
|
|
||||||
import com.arsdigita.bebop.PageState;
|
import com.arsdigita.bebop.PageState;
|
||||||
import com.arsdigita.bebop.event.FormInitListener;
|
import com.arsdigita.bebop.event.FormInitListener;
|
||||||
import com.arsdigita.bebop.event.FormProcessListener;
|
import com.arsdigita.bebop.event.FormProcessListener;
|
||||||
import com.arsdigita.bebop.event.FormSectionEvent;
|
import com.arsdigita.bebop.event.FormSectionEvent;
|
||||||
import com.arsdigita.bebop.event.FormValidationListener;
|
import com.arsdigita.bebop.event.FormValidationListener;
|
||||||
|
import com.arsdigita.bebop.event.PrintEvent;
|
||||||
|
import com.arsdigita.bebop.event.PrintListener;
|
||||||
|
import com.arsdigita.bebop.form.SingleSelect;
|
||||||
|
import com.arsdigita.bebop.form.TextField;
|
||||||
|
import com.arsdigita.bebop.parameters.NotNullValidationListener;
|
||||||
import com.arsdigita.bebop.parameters.ParameterModel;
|
import com.arsdigita.bebop.parameters.ParameterModel;
|
||||||
import com.arsdigita.bebop.parameters.StringParameter;
|
import com.arsdigita.bebop.parameters.StringParameter;
|
||||||
import com.arsdigita.cms.ContentItem;
|
import com.arsdigita.cms.ContentItem;
|
||||||
import com.arsdigita.cms.ItemSelectionModel;
|
import com.arsdigita.cms.ItemSelectionModel;
|
||||||
import com.arsdigita.cms.contenttypes.PublicPersonalProfile;
|
import com.arsdigita.cms.contenttypes.PublicPersonalProfile;
|
||||||
|
import com.arsdigita.cms.contenttypes.PublicPersonalProfileBundle;
|
||||||
import com.arsdigita.cms.ui.authoring.BasicPageForm;
|
import com.arsdigita.cms.ui.authoring.BasicPageForm;
|
||||||
import com.arsdigita.domain.DomainObjectFactory;
|
import com.arsdigita.domain.DomainObjectFactory;
|
||||||
import com.arsdigita.persistence.DataCollection;
|
import com.arsdigita.persistence.DataCollection;
|
||||||
import com.arsdigita.persistence.SessionManager;
|
import com.arsdigita.persistence.SessionManager;
|
||||||
|
import com.arsdigita.util.UncheckedWrapperException;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.util.TooManyListenersException;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @author Jens Pelzetter
|
* @author Jens Pelzetter
|
||||||
* @version $Id$
|
* @version $Id$
|
||||||
*/
|
*/
|
||||||
public class PublicPersonalProfilePropertyForm
|
public class PublicPersonalProfilePropertyForm extends BasicPageForm implements FormProcessListener,
|
||||||
extends BasicPageForm
|
FormInitListener,
|
||||||
implements FormProcessListener,
|
FormValidationListener {
|
||||||
FormInitListener,
|
|
||||||
FormValidationListener {
|
|
||||||
|
|
||||||
private PublicPersonalProfilePropertiesStep step;
|
//private PublicPersonalProfilePropertiesStep step;
|
||||||
public static final String ID = "PublicPersonalProfile_edit";
|
public static final String ID = "PublicPersonalProfile_edit";
|
||||||
private ItemSelectionModel itemModel;
|
private ItemSelectionModel itemModel;
|
||||||
|
|
||||||
|
|
@ -38,11 +46,10 @@ public class PublicPersonalProfilePropertyForm
|
||||||
this(itemModel, null);
|
this(itemModel, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PublicPersonalProfilePropertyForm(
|
public PublicPersonalProfilePropertyForm(final ItemSelectionModel itemModel,
|
||||||
ItemSelectionModel itemModel,
|
final PublicPersonalProfilePropertiesStep step) {
|
||||||
PublicPersonalProfilePropertiesStep step) {
|
|
||||||
super(ID, itemModel);
|
super(ID, itemModel);
|
||||||
this.step = step;
|
//this.step = step;
|
||||||
this.itemModel = itemModel;
|
this.itemModel = itemModel;
|
||||||
addValidationListener(this);
|
addValidationListener(this);
|
||||||
}
|
}
|
||||||
|
|
@ -51,53 +58,64 @@ public class PublicPersonalProfilePropertyForm
|
||||||
public void addWidgets() {
|
public void addWidgets() {
|
||||||
super.addWidgets();
|
super.addWidgets();
|
||||||
|
|
||||||
add(new Label(PublicPersonalProfileGlobalizationUtil.globalize(
|
add(new Label(PublicPersonalProfileGlobalizationUtil.globalize("publicpersonalprofile.ui.create.select_person")));
|
||||||
"publicpersonalprofile.ui.profile.url")));
|
final ParameterModel ownerModel = new StringParameter(PublicPersonalProfileBundle.OWNER);
|
||||||
ParameterModel profileUrlParam =
|
final SingleSelect ownerSelect = new SingleSelect(ownerModel);
|
||||||
new StringParameter(PublicPersonalProfile.PROFILE_URL);
|
ownerSelect.addValidationListener(new NotNullValidationListener());
|
||||||
TextField profileUrl = new TextField(profileUrlParam);
|
|
||||||
|
try {
|
||||||
|
ownerSelect.addPrintListener(new PrintListener() {
|
||||||
|
|
||||||
|
public void prepare(PrintEvent e) {
|
||||||
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (TooManyListenersException ex) {
|
||||||
|
throw new UncheckedWrapperException(ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
add(new Label(PublicPersonalProfileGlobalizationUtil.globalize("publicpersonalprofile.ui.profile.url")));
|
||||||
|
final ParameterModel profileUrlParam = new StringParameter(PublicPersonalProfile.PROFILE_URL);
|
||||||
|
final TextField profileUrl = new TextField(profileUrlParam);
|
||||||
add(profileUrl);
|
add(profileUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init(FormSectionEvent fse) throws FormProcessException {
|
public void init(final FormSectionEvent fse) throws FormProcessException {
|
||||||
final PageState state = fse.getPageState();
|
//final PageState state = fse.getPageState();
|
||||||
final FormData data = fse.getFormData();
|
final FormData data = fse.getFormData();
|
||||||
final PublicPersonalProfile profile =
|
final PublicPersonalProfile profile = (PublicPersonalProfile) super.initBasicWidgets(fse);
|
||||||
(PublicPersonalProfile) super.
|
|
||||||
initBasicWidgets(fse);
|
|
||||||
|
|
||||||
data.put(PublicPersonalProfile.PROFILE_URL, profile.getProfileUrl());
|
data.put(PublicPersonalProfile.PROFILE_URL, profile.getProfileUrl());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void process(FormSectionEvent fse) throws FormProcessException {
|
public void process(final FormSectionEvent fse) throws FormProcessException {
|
||||||
final PublicPersonalProfile profile =
|
final PublicPersonalProfile profile = (PublicPersonalProfile) processBasicWidgets(fse);
|
||||||
(PublicPersonalProfile) processBasicWidgets(
|
|
||||||
fse);
|
|
||||||
final FormData data = fse.getFormData();
|
final FormData data = fse.getFormData();
|
||||||
final PageState state = fse.getPageState();
|
final PageState state = fse.getPageState();
|
||||||
|
|
||||||
if ((profile != null)
|
if ((profile != null) && getSaveCancelSection().getSaveButton().isSelected(state)) {
|
||||||
&& getSaveCancelSection().getSaveButton().isSelected(state)) {
|
|
||||||
profile.setProfileUrl(((String) data.get(
|
final String ownerId = (String)data.get(PublicPersonalProfileBundle.OWNER);
|
||||||
PublicPersonalProfile.PROFILE_URL)).
|
if (!profile.getOwner().getID().equals(new BigDecimal(ownerId))) {
|
||||||
toLowerCase());
|
|
||||||
|
}
|
||||||
|
|
||||||
|
profile.setProfileUrl(((String) data.get(PublicPersonalProfile.PROFILE_URL)).toLowerCase());
|
||||||
|
|
||||||
profile.save();
|
profile.save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void validate(FormSectionEvent fse) throws FormProcessException {
|
public void validate(final FormSectionEvent fse) throws FormProcessException {
|
||||||
super.validate(fse);
|
super.validate(fse);
|
||||||
|
|
||||||
final PageState state = fse.getPageState();
|
final PageState state = fse.getPageState();
|
||||||
final FormData data = fse.getFormData();
|
final FormData data = fse.getFormData();
|
||||||
|
|
||||||
|
final String profilesUrl = (String) data.get(PublicPersonalProfile.PROFILE_URL);
|
||||||
String profilesUrl =
|
|
||||||
(String) data.get(PublicPersonalProfile.PROFILE_URL);
|
|
||||||
if ((profilesUrl == null) || profilesUrl.isEmpty()) {
|
if ((profilesUrl == null) || profilesUrl.isEmpty()) {
|
||||||
data.addError(PublicPersonalProfileGlobalizationUtil.globalize(
|
data.addError(PublicPersonalProfileGlobalizationUtil.globalize(
|
||||||
"publicpersonalprofile.ui.profile_url.required"));
|
"publicpersonalprofile.ui.profile_url.required"));
|
||||||
|
|
@ -108,11 +126,9 @@ public class PublicPersonalProfilePropertyForm
|
||||||
"publicpersonalprofile.ui.profile_url.reserved"));
|
"publicpersonalprofile.ui.profile_url.reserved"));
|
||||||
}
|
}
|
||||||
|
|
||||||
DataCollection profiles = SessionManager.getSession().retrieve(
|
final DataCollection profiles = SessionManager.getSession().retrieve(
|
||||||
PublicPersonalProfile.BASE_DATA_OBJECT_TYPE);
|
PublicPersonalProfile.BASE_DATA_OBJECT_TYPE);
|
||||||
profiles.addFilter(String.format("profileUrl = '%s'",
|
profiles.addFilter(String.format("profileUrl = '%s'", ((String) data.get(PublicPersonalProfile.PROFILE_URL)).
|
||||||
((String) data.get(
|
|
||||||
PublicPersonalProfile.PROFILE_URL)).
|
|
||||||
toLowerCase()));
|
toLowerCase()));
|
||||||
profiles.addFilter(String.format("version = '%s'", ContentItem.DRAFT));
|
profiles.addFilter(String.format("version = '%s'", ContentItem.DRAFT));
|
||||||
if (profiles.size() > 1) {
|
if (profiles.size() > 1) {
|
||||||
|
|
@ -120,9 +136,8 @@ public class PublicPersonalProfilePropertyForm
|
||||||
"publicpersonalprofile.ui.profile_url.already_in_use"));
|
"publicpersonalprofile.ui.profile_url.already_in_use"));
|
||||||
} else if (profiles.size() == 1) {
|
} else if (profiles.size() == 1) {
|
||||||
profiles.next();
|
profiles.next();
|
||||||
PublicPersonalProfile profile =
|
final PublicPersonalProfile profile = (PublicPersonalProfile) DomainObjectFactory.newInstance(profiles.
|
||||||
(PublicPersonalProfile) DomainObjectFactory.
|
getDataObject());
|
||||||
newInstance(profiles.getDataObject());
|
|
||||||
|
|
||||||
if (!(profile.getID().equals(
|
if (!(profile.getID().equals(
|
||||||
itemModel.getSelectedItem(state).getID()))) {
|
itemModel.getSelectedItem(state).getID()))) {
|
||||||
|
|
@ -131,4 +146,5 @@ public class PublicPersonalProfilePropertyForm
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -347,9 +347,12 @@ public class Publication extends ContentPage {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSearchSummary() {
|
public String getSearchSummary() {
|
||||||
return String.format("%s %s %s",
|
String summary = String.format("%s %s %s", getTitle(), getAuthors(), getAbstract());
|
||||||
getTitle(),
|
if (summary.length() > 4000) {
|
||||||
getAuthors(),
|
summary = summary.substring(0, 4000);
|
||||||
getAbstract());
|
}
|
||||||
|
|
||||||
|
return summary;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,21 +60,23 @@ public class CollectedVolumeImportReport {
|
||||||
final StringWriter strWriter = new StringWriter();
|
final StringWriter strWriter = new StringWriter();
|
||||||
final PrintWriter writer = new PrintWriter(strWriter);
|
final PrintWriter writer = new PrintWriter(strWriter);
|
||||||
|
|
||||||
for(int i = 0; i < 40; i++) {
|
for (int i = 0; i < 40; i++) {
|
||||||
writer.append("- ");
|
writer.append("- ");
|
||||||
}
|
}
|
||||||
writer.append("\n");
|
writer.append("\n");
|
||||||
|
|
||||||
writer.printf("Created collected volume '%s' and linked it with publication.\n", collectedVolumeTitle);
|
writer.printf("Created collected volume '%s' and linked it with publication.\n", collectedVolumeTitle);
|
||||||
writer.print("Authors of collected volume:\n");
|
writer.print("Authors of collected volume:\n");
|
||||||
for(AuthorImportReport author : authors) {
|
for (AuthorImportReport author : authors) {
|
||||||
writer.printf("%s\n", author.toString());
|
writer.printf("%s\n", author.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
writer.append(publisher.toString());
|
if (publisher != null) {
|
||||||
|
writer.append(publisher.toString());
|
||||||
|
}
|
||||||
writer.append('\n');
|
writer.append('\n');
|
||||||
|
|
||||||
for(int i = 0; i < 40; i++) {
|
for (int i = 0; i < 40; i++) {
|
||||||
writer.append("- ");
|
writer.append("- ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -245,7 +245,9 @@ public class ImporterUtil {
|
||||||
report.addAuthor(processAuthor(collectedVolume, author, pretend));
|
report.addAuthor(processAuthor(collectedVolume, author, pretend));
|
||||||
}
|
}
|
||||||
|
|
||||||
report.setPublisher(processPublisher(collectedVolume, place, publisherName, pretend));
|
if ((publisherName != null) && !publisherName.isEmpty()) {
|
||||||
|
report.setPublisher(processPublisher(collectedVolume, place, publisherName, pretend));
|
||||||
|
}
|
||||||
|
|
||||||
collectedVolume.save();
|
collectedVolume.save();
|
||||||
article.setCollectedVolume(collectedVolume);
|
article.setCollectedVolume(collectedVolume);
|
||||||
|
|
@ -330,7 +332,9 @@ public class ImporterUtil {
|
||||||
report.addAuthor(processAuthor(proceedings, author, pretend));
|
report.addAuthor(processAuthor(proceedings, author, pretend));
|
||||||
}
|
}
|
||||||
|
|
||||||
report.setPublisher(processPublisher(proceedings, place, publisherName, pretend));
|
if ((publisherName != null) && !publisherName.isEmpty()) {
|
||||||
|
report.setPublisher(processPublisher(proceedings, place, publisherName, pretend));
|
||||||
|
}
|
||||||
|
|
||||||
proceedings.save();
|
proceedings.save();
|
||||||
inProceedings.setProceedings(proceedings);
|
inProceedings.setProceedings(proceedings);
|
||||||
|
|
@ -466,6 +470,8 @@ public class ImporterUtil {
|
||||||
if (publish) {
|
if (publish) {
|
||||||
publishItem(orga);
|
publishItem(orga);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
report.setType(orga.getClass().getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
report.setCreated(true);
|
report.setCreated(true);
|
||||||
|
|
@ -477,11 +483,12 @@ public class ImporterUtil {
|
||||||
createdOrgas.add(name);
|
createdOrgas.add(name);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
collection.next();
|
||||||
|
final GenericOrganizationalUnit orga = new GenericOrganizationalUnit(collection.getDataObject());
|
||||||
if (!pretend) {
|
if (!pretend) {
|
||||||
collection.next();
|
|
||||||
final GenericOrganizationalUnit orga = new GenericOrganizationalUnit(collection.getDataObject());
|
|
||||||
publication.setOrganization(orga);
|
publication.setOrganization(orga);
|
||||||
}
|
}
|
||||||
|
report.setType(orga.getClass().getName());
|
||||||
report.setCreated(false);
|
report.setCreated(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -127,21 +127,23 @@ abstract class AbstractPublicationImporter<T extends Publication> {
|
||||||
|
|
||||||
bundle.save();
|
bundle.save();
|
||||||
|
|
||||||
if (data.getAbstract().length() < 4096) {
|
if (data.getAbstract().length() < 3975) {
|
||||||
publication.setAbstract(data.getAbstract());
|
publication.setAbstract(data.getAbstract());
|
||||||
} else {
|
} else {
|
||||||
publication.setAbstract(data.getAbstract().substring(0, 4096));
|
publication.setAbstract(data.getAbstract().substring(0, 3975));
|
||||||
}
|
}
|
||||||
if (data.getMisc().length() < 4096) {
|
if (data.getMisc().length() < 3975) {
|
||||||
publication.setMisc(data.getMisc());
|
publication.setMisc(data.getMisc());
|
||||||
} else {
|
} else {
|
||||||
publication.setMisc(data.getMisc().substring(0, 4096));
|
publication.setMisc(data.getMisc().substring(0, 3975));
|
||||||
}
|
}
|
||||||
|
|
||||||
publication.save();
|
publication.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
processAuthors(publication);
|
if ((data.getAuthors() != null) && !data.getAuthors().isEmpty()) {
|
||||||
|
processAuthors(publication);
|
||||||
|
}
|
||||||
|
|
||||||
return publication;
|
return publication;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
|
||||||
publication.setISBN(data.getIsbn());
|
publication.setISBN(data.getIsbn());
|
||||||
}
|
}
|
||||||
if (isbn.length() == 13) {
|
if (isbn.length() == 13) {
|
||||||
getReport().addField(new FieldImportReport("isbn", isbn));
|
getReport().addField(new FieldImportReport("isbn", isbn));
|
||||||
} else {
|
} else {
|
||||||
getReport().addMessage(String.format("Invalid ISBN at line %d.", data.getLineNumber()));
|
getReport().addMessage(String.format("Invalid ISBN at line %d.", data.getLineNumber()));
|
||||||
}
|
}
|
||||||
|
|
@ -47,7 +47,9 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
|
||||||
getReport().addField(new FieldImportReport("edition", data.getEdition()));
|
getReport().addField(new FieldImportReport("edition", data.getEdition()));
|
||||||
}
|
}
|
||||||
|
|
||||||
getImporterUtil().processPublisher(publication, getData().getPlace(), getData().getPublisher(), isPretend());
|
if ((data.getPublisher() != null) && !data.getPublisher().isEmpty()) {
|
||||||
|
getImporterUtil().processPublisher(publication, getData().getPlace(), getData().getPublisher(), isPretend());
|
||||||
|
}
|
||||||
|
|
||||||
return publication;
|
return publication;
|
||||||
}
|
}
|
||||||
|
|
@ -96,4 +98,5 @@ abstract class AbstractPublicationWithPublisherImporter<T extends PublicationWit
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,15 +69,17 @@ class ArticleInCollectedVolumeImporter extends AbstractPublicationImporter<Artic
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processPagesTo(final ArticleInCollectedVolume publication) {
|
private void processPagesTo(final ArticleInCollectedVolume publication) {
|
||||||
try {
|
if ((getData().getPageFrom() != null) && !getData().getPageFrom().isEmpty()) {
|
||||||
final int pagesTo = Integer.parseInt(getData().getPageTo());
|
try {
|
||||||
if (!isPretend()) {
|
final int pagesTo = Integer.parseInt(getData().getPageTo());
|
||||||
publication.setPagesTo(pagesTo);
|
if (!isPretend()) {
|
||||||
|
publication.setPagesTo(pagesTo);
|
||||||
|
}
|
||||||
|
getReport().addField(new FieldImportReport("Pages to", getData().getPageTo()));
|
||||||
|
} catch (NumberFormatException ex) {
|
||||||
|
getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.",
|
||||||
|
getData().getLineNumber()));
|
||||||
}
|
}
|
||||||
getReport().addField(new FieldImportReport("Pages to", getData().getPageTo()));
|
|
||||||
} catch (NumberFormatException ex) {
|
|
||||||
getReport().addMessage(String.format("Failed to parse pageTo data in line '%d'.",
|
|
||||||
getData().getLineNumber()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -98,28 +98,28 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
|
|
||||||
final Session session = SessionManager.getSession();
|
final Session session = SessionManager.getSession();
|
||||||
final TransactionContext tctx = session.getTransactionContext();
|
final TransactionContext tctx = session.getTransactionContext();
|
||||||
tctx.beginTxn();
|
|
||||||
|
|
||||||
try {
|
System.out.printf("Import publications...\n");
|
||||||
int lineNumber = 2; //Because we are starting at line 2 of the CSV file (line 1 contains the column headers)
|
int lineNumber = 2; //Because we are starting at line 2 of the CSV file (line 1 contains the column headers)
|
||||||
for (String line : lines) {
|
for (String line : lines) {
|
||||||
|
tctx.beginTxn();
|
||||||
|
|
||||||
|
try {
|
||||||
|
System.out.printf("Processing publication %d...\n", lineNumber);
|
||||||
final PublicationImportReport result = importPublication(line,
|
final PublicationImportReport result = importPublication(line,
|
||||||
lineNumber,
|
lineNumber,
|
||||||
publishNewItems,
|
publishNewItems,
|
||||||
pretend,
|
pretend,
|
||||||
importerUtil);
|
importerUtil);
|
||||||
report.addPublication(result);
|
report.addPublication(result);
|
||||||
lineNumber++;
|
} catch (Exception ex) {
|
||||||
|
tctx.abortTxn();
|
||||||
|
throw new SciPublicationsImportException(ex);
|
||||||
}
|
}
|
||||||
} catch (Exception ex) {
|
|
||||||
tctx.abortTxn();
|
|
||||||
throw new SciPublicationsImportException(ex);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pretend) {
|
|
||||||
tctx.abortTxn();
|
|
||||||
} else {
|
|
||||||
tctx.commitTxn();
|
tctx.commitTxn();
|
||||||
|
|
||||||
|
lineNumber++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return report;
|
return report;
|
||||||
|
|
@ -163,7 +163,7 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
processProceedings(publishNewItems, data, report, pretend, importerUtil);
|
processProceedings(publishNewItems, data, report, pretend, importerUtil);
|
||||||
} else if (Review.class.getSimpleName().equals(data.getType())) {
|
} else if (Review.class.getSimpleName().equals(data.getType())) {
|
||||||
processReview(publishNewItems, data, report, pretend, importerUtil);
|
processReview(publishNewItems, data, report, pretend, importerUtil);
|
||||||
} else if(ResearchReport.class.getSimpleName().equals(data.getType()) || "Report".equals(data.getType())) {
|
} else if (ResearchReport.class.getSimpleName().equals(data.getType()) || "Report".equals(data.getType())) {
|
||||||
processResearchReport(publishNewItems, data, report, pretend, importerUtil);
|
processResearchReport(publishNewItems, data, report, pretend, importerUtil);
|
||||||
} else if (WorkingPaper.class.getSimpleName().equals(data.getType())) {
|
} else if (WorkingPaper.class.getSimpleName().equals(data.getType())) {
|
||||||
processWorkingPaper(publishNewItems, data, report, pretend, importerUtil);
|
processWorkingPaper(publishNewItems, data, report, pretend, importerUtil);
|
||||||
|
|
@ -306,10 +306,10 @@ public class PublicationsImporter implements SciPublicationsImporter {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processResearchReport(final boolean publishNewItems,
|
private void processResearchReport(final boolean publishNewItems,
|
||||||
final CsvLine data,
|
final CsvLine data,
|
||||||
final PublicationImportReport report,
|
final PublicationImportReport report,
|
||||||
final boolean pretend,
|
final boolean pretend,
|
||||||
final ImporterUtil importerUtil) {
|
final ImporterUtil importerUtil) {
|
||||||
if (isPublicationAlreadyInDatabase(data, ResearchReport.class.getSimpleName(), report)) {
|
if (isPublicationAlreadyInDatabase(data, ResearchReport.class.getSimpleName(), report)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue