package fr.openwide.core.wicket.more.console.maintenance.file.page;
import org.apache.wicket.Session;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.validation.validator.RangeValidator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fr.openwide.core.jpa.more.business.file.model.path.HashTableFileStorePathGeneratorImpl;
import fr.openwide.core.wicket.markup.html.basic.CoreLabel;
import fr.openwide.core.wicket.more.console.maintenance.template.ConsoleMaintenanceTemplate;
import fr.openwide.core.wicket.more.console.template.ConsoleTemplate;
public class ConsoleMaintenanceFilePage extends ConsoleMaintenanceTemplate {
private static final long serialVersionUID = -4594419424463767339L;
private static final Logger LOGGER = LoggerFactory.getLogger(ConsoleMaintenanceFilePage.class);
private final IModel<Integer> hashTableByteSizeModel = new Model<Integer>(1);
private final IModel<String> fileKeyModel = new Model<String>();
private final IModel<String> extensionModel = new Model<String>();
private final IModel<String> pathModel = new Model<String>();
public ConsoleMaintenanceFilePage(PageParameters parameters) {
super(parameters);
addHeadPageTitleKey("console.maintenance.file");
Form<Void> form = new Form<Void>("form") {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit() {
try {
HashTableFileStorePathGeneratorImpl pathGenerator = new HashTableFileStorePathGeneratorImpl(hashTableByteSizeModel.getObject());
pathModel.setObject(pathGenerator.getFilePath(fileKeyModel.getObject(), extensionModel.getObject()));
pathModel.detach();
} catch (Exception e) {
LOGGER.error("Unexpected error while generating file path through hashtable.");
pathModel.setObject(null);
Session.get().error(getString("common.error"));
}
}
@Override
protected void onError() {
pathModel.setObject(null);
}
};
add(form);
form.add(
new TextField<Integer>("hashTableByteSize", hashTableByteSizeModel, Integer.class)
.setRequired(true)
.setLabel(new ResourceModel("console.maintenance.file.hashTableByteSize"))
.add(
new RangeValidator<Integer>(
HashTableFileStorePathGeneratorImpl.MIN_HASH_TABLE_BYTE_SIZE,
HashTableFileStorePathGeneratorImpl.MAX_HASH_TABLE_BYTE_SIZE)
),
new TextField<String>("fileKey", fileKeyModel)
.setRequired(true)
.setLabel(new ResourceModel("console.maintenance.file.fileKey")),
new TextField<String>("extension", extensionModel)
.setLabel(new ResourceModel("console.maintenance.file.extension")),
new CoreLabel("path", pathModel).hideIfEmpty()
);
}
@Override
protected void onDetach() {
super.onDetach();
hashTableByteSizeModel.detach();
fileKeyModel.detach();
extensionModel.detach();
pathModel.detach();
}
@Override
protected Class<? extends ConsoleTemplate> getMenuItemPageClass() {
return ConsoleMaintenanceFilePage.class;
}
}