/**
* Copyright (C) 2015 Orange
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.francetelecom.clara.cloud.presentation.designer.services.queuereceive;
import java.util.Arrays;
import org.apache.wicket.Page;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
import org.apache.wicket.bean.validation.PropertyValidator;
import org.apache.wicket.behavior.AttributeAppender;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.RequiredTextField;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.link.ExternalLink;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.ResourceModel;
import org.apache.wicket.model.StringResourceModel;
import com.francetelecom.clara.cloud.logicalmodel.LogicalQueueReceiveService;
import com.francetelecom.clara.cloud.presentation.designer.services.LogicalServiceBasePanel;
import com.francetelecom.clara.cloud.presentation.resource.CacheActivatedImage;
/**
* Created by IntelliJ IDEA.
* User: Thomas Escalle - tawe8231
* Entity : FT/OLNC/RD/MAPS/MEP/MSE
* Date: 23/01/12
*/
public class LogicalQueueReceiveServicePanel extends LogicalServiceBasePanel<LogicalQueueReceiveService> {
private static final Long[] maxMsgSizeList = {1L, 5L, 10L};
private static final Long[] maxNbMsgPerDayList = {1L, 2L, 5L, 10L, 50L};
private static final Long[] nbRetentionDayList = {1L, 2L, 3L, 4L, 5L};
public LogicalQueueReceiveServicePanel(String id, IModel<LogicalQueueReceiveService> model, Page parentPage,
boolean isNew, boolean readOnly, boolean configOverride) {
super(id, model, parentPage, isNew, readOnly, configOverride);
getServiceForm().add(new CacheActivatedImage("logicalqueuereceiveServicePanelIcon",new ResourceModel("queuereceive.icon").getObject()));
// Online help link
String completeHelpUrl = "";
try {
completeHelpUrl = new StringResourceModel("portal.designer.logical.service.online_manual.baseUrl", null).getString()
+ new StringResourceModel("portal.designer.logical.service.online_manual." + getLogicalModelType(), null).getString();
} catch (Exception e) {
//do nothing
}
ExternalLink onlineHelpLink = new ExternalLink("onlineHelpLink", completeHelpUrl);
getServiceForm().add(onlineHelpLink);
if (completeHelpUrl.isEmpty()) {
onlineHelpLink.setVisible(false);
}
// FUNCTIONNAL PARAMETERS
RequiredTextField<String> label = new RequiredTextField<String>("label");
label.setLabel(new StringResourceModel("portal.designer.service.queue_receive.label",null));
label.add(new PropertyValidator<>());
getServiceForm().add(label);
TextField<String> serviceName = new TextField<String>("serviceName");
serviceName.setLabel(new StringResourceModel("portal.designer.service.queue_receive.serviceName",null));
serviceName.add(new PropertyValidator<>());
getServiceForm().add(serviceName);
TextField serviceVersion = new TextField("serviceVersion");
serviceVersion.setLabel(new StringResourceModel("portal.designer.service.queue_receive.serviceVersion",null));
serviceVersion.add(new PropertyValidator<>());
getServiceForm().add(serviceVersion);
TextField<String> jndiQueueName = new TextField<String>("jndiQueueName");
jndiQueueName.setLabel(new StringResourceModel("portal.designer.service.queue_receive.jndiQueueName",null));
jndiQueueName.add(new AttributeAppender("title", new StringResourceModel("portal.designer.service.queue_receive.preferredJNDI", null), " "));
jndiQueueName.add(new PropertyValidator<>());
getServiceForm().add(jndiQueueName);
DropDownChoice<Long> msgMaxSizeKB = new DropDownChoice<Long>("msgMaxSizeKB", Arrays.asList(maxMsgSizeList));
msgMaxSizeKB.add(defaultDropDownUpdateBehavior());
getServiceForm().add(msgMaxSizeKB);
msgMaxSizeKB.setLabel(new StringResourceModel("portal.designer.service.queue_receive.msgMaxSizeKB",null));
msgMaxSizeKB.add(new PropertyValidator<>());
DropDownChoice<Long> maxNbMsgPerDay = new DropDownChoice<Long>("maxNbMsgPerDay", Arrays.asList(maxNbMsgPerDayList));
maxNbMsgPerDay.add(defaultDropDownUpdateBehavior());
getServiceForm().add(maxNbMsgPerDay);
maxNbMsgPerDay.setLabel(new StringResourceModel("portal.designer.service.queue_receive.maxNbMsgPerDay",null));
maxNbMsgPerDay.add(new PropertyValidator<>());
DropDownChoice<Long> nbRetentionDay = new DropDownChoice<Long>("nbRetentionDay", Arrays.asList(nbRetentionDayList));
nbRetentionDay.add(defaultDropDownUpdateBehavior());
getServiceForm().add(nbRetentionDay);
nbRetentionDay.setLabel(new StringResourceModel("portal.designer.service.queue_receive.nbRetentionDay",null));
nbRetentionDay.add(new PropertyValidator<>());
}
/**
* Behavior which does nothing but allows the update of a dropdown correctly
* @return a behavior which fixes the update of dropdowns
*/
private Behavior defaultDropDownUpdateBehavior() {
return new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
}
};
}
}