package org.orienteer.core.component.command;
import com.google.common.base.Strings;
import com.orientechnologies.orient.core.record.impl.ODocument;
import ru.ydn.wicket.wicketorientdb.security.OSecurityHelper;
import ru.ydn.wicket.wicketorientdb.security.OrientPermission;
import ru.ydn.wicket.wicketorientdb.security.RequiredOrientResource;
import ru.ydn.wicket.wicketorientdb.security.RequiredOrientResources;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.model.IModel;
import org.apache.wicket.util.visit.IVisit;
import org.apache.wicket.util.visit.IVisitor;
import org.orienteer.core.component.property.DisplayMode;
import org.orienteer.core.component.table.OrienteerDataTable;
import org.orienteer.core.module.OrienteerLocalizationModule;
/**
* Command to save all OLocalizations and make active those which have both language and value.
*/
@RequiredOrientResource(value=OSecurityHelper.CLASS, specific=OrienteerLocalizationModule.OCLASS_LOCALIZATION, permissions=OrientPermission.UPDATE)
public class SaveOLocalizationsCommand extends AbstractSaveCommand<ODocument> {
private OrienteerDataTable<ODocument, ?> table;
public SaveOLocalizationsCommand(OrienteerDataTable<ODocument, ?> table,
IModel<DisplayMode> displayModeModel)
{
super(table, displayModeModel);
this.table = table;
}
@Override
public void onClick(AjaxRequestTarget target) {
table.visitChildren(OrienteerDataTable.MetaContextItem.class, new IVisitor<OrienteerDataTable.MetaContextItem<ODocument, ?>, Void>() {
@Override
public void component(OrienteerDataTable.MetaContextItem<ODocument, ?> rowItem, IVisit<Void> visit) {
ODocument modelObject = rowItem.getModelObject();
if (modelObject == null) {
return;
}
String localizationLang = modelObject.field(OrienteerLocalizationModule.OPROPERTY_LANG);
String localizationValue = modelObject.field(OrienteerLocalizationModule.OPROPERTY_VALUE);
if (!Strings.isNullOrEmpty(localizationLang) && !Strings.isNullOrEmpty(localizationValue)) {
modelObject.field(OrienteerLocalizationModule.OPROPERTY_ACTIVE, true);
}
modelObject.save();
visit.dontGoDeeper();
}
});
super.onClick(target);
}
}