/* 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 org.activiti.designer.property.extension.util;
import org.activiti.designer.integration.servicetask.PropertyType;
import org.activiti.designer.property.custom.PeriodPropertyElement;
import org.apache.commons.lang.StringUtils;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Spinner;
/**
* Provides utilities for extension property editing.
*
* @author Tiese Barrell
* @since 0.6.1
* @version 1
*/
public final class ExtensionPropertyUtil {
private ExtensionPropertyUtil() {
}
/**
* Inspects the provided parent component and extracts the value for the
* {@link PropertyType#PERIOD} enclosed.
*
* @param parent
* the parent component
*/
public static final String getPeriodValueFromParent(final Composite parent) {
String[] values = new String[PeriodPropertyElement.values().length];
for (final Control control : parent.getChildren()) {
if (control instanceof Spinner) {
final String periodKey = (String) control.getData("PERIOD_KEY");
final PeriodPropertyElement element = PeriodPropertyElement.byShortFormat(periodKey);
if (element != null) {
final int elementValue = ((Spinner) control).getSelection();
final String elementStringValue = elementValue + element.getShortFormat();
values[element.getOrder()] = elementStringValue;
}
}
}
final StringBuilder builder = new StringBuilder();
for (int i = 0; i < values.length; i++) {
builder.append(values[i]);
if (i != values.length - 1) {
builder.append(" ");
}
}
String value = builder.toString();
return value;
}
/**
* Inspects the provided value and extracts the value for the
* {@link PeriodPropertyElement} provided.
*
* @param parent
* the parent component
*/
public static final int getPeriodPropertyElementFromValue(final String value, final PeriodPropertyElement propertyElement) {
int result = 0;
final String[] elementValues = value.split(" ");
if (propertyElement != null) {
final String stripped = StringUtils.substringBeforeLast(elementValues[propertyElement.getOrder()], propertyElement.getShortFormat());
result = Integer.parseInt(stripped);
}
return result;
}
}