All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cedarsolutions.client.gwt.widget.ViewDataUtils Maven / Gradle / Ivy

There is a newer version: 5.8.4
Show newest version
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 *              C E D A R
 *          S O L U T I O N S       "Software done right."
 *           S O F T W A R E
 *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 * Copyright (c) 2013-2014 Kenneth J. Pronovici.
 * All rights reserved.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the Apache License, Version 2.0.
 * See LICENSE for more information about the licensing terms.
 *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 * Author   : Kenneth J. Pronovici 
 * Language : Java 6
 * Project  : Common Java Functionality
 *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
package com.cedarsolutions.client.gwt.widget;

import static com.cedarsolutions.util.gwt.GwtStringUtils.substring;
import static com.cedarsolutions.util.gwt.GwtStringUtils.trim;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.cedarsolutions.client.gwt.custom.datepicker.DateBox;
import com.cedarsolutions.util.gwt.GwtDateUtils;
import com.cedarsolutions.util.gwt.GwtStringUtils;
import com.google.gwt.user.client.ui.HasValue;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.ValueBoxBase;

/**
 * Data-related utility methods used by views.
 * @author Kenneth J. Pronovici, Cedar Solutions Inc.
 */
public class ViewDataUtils {

    /** The timestamp used for creating start dates. */
    public static final String START_TIMESTAMP = "00:00:00,000";

    /** The timestamp used for creating end dates. */
    public static final String END_TIMESTAMP = "23:59:59,999";

    /** Create a DateBox using the standard GwtDateUtils date format. */
    public static DateBox createDateBoxForDate() {
        DateBox dateBox = new DateBox();
        dateBox.setFormat(new DateBox.DefaultFormat(GwtDateUtils.getDateFormat()));
        return dateBox;
    }

    /** Create a DateBox using the standard GwtDateUtils time format. */
    public static DateBox createDateBoxForTime() {
        DateBox dateBox = new DateBox();
        dateBox.setFormat(new DateBox.DefaultFormat(GwtDateUtils.getTimeFormat()));
        return dateBox;
    }

    /** Create a DateBox using the standard GwtDateUtils timestamp format. */
    public static DateBox createDateBoxForTimestamp() {
        DateBox dateBox = new DateBox();
        dateBox.setFormat(new DateBox.DefaultFormat(GwtDateUtils.getTimestampFormat()));
        return dateBox;
    }

    /**
     * Fill a label with a value.
     * @param label  Label to fill in
     * @param value  Value to fill in
     */
    public static  void fillLabel(Label label, T value) {
        if (value == null) {
            label.setText("");
        } else {
            label.setText(String.valueOf(value));
        }
    }

    /**
     * Fill an input field based on a value from criteria.
     * @param input  Input to fill in
     * @param value  Value to fill in
     */
    public static  void fillInput(HasValue input, T value) {
        input.setValue(value);
    }

    /**
     * Fill an input field based on a criteria list, using the first value in the list.
     * @param input  Input to fill in
     * @param values List of values (the first one will be used)
     */
    public static  void fillInput(HasValue input, List values) {
        if (values == null || values.isEmpty()) {
            input.setValue(null);
        } else {
            input.setValue(values.get(0));
        }
    }

    /**
     * Fill an input field based on a value from criteria.
     * @param input  Input to fill in
     * @param value  Value to fill in
     */
    public static  void fillInput(AbstractDropdownList input, T value) {
        input.setSelectedObjectValue(value);
    }

    /**
     * Fill an input field based on a criteria list, using the first value in the list.
     * @param input  Input to fill in
     * @param values List of values (the first one will be used)
     */
    public static  void fillInput(AbstractDropdownList input, List values) {
        if (values == null || values.isEmpty()) {
            input.setSelectedObjectValue(null);
        } else {
            input.setSelectedObjectValue(values.get(0));
        }
    }

    /**
     * Fill an input field based on a criteria list.
     * @param input  Input to fill in
     * @param value  Value to fill in
     */
    public static  void fillInput(ValueBoxBase input, T value) {
        input.setValue(value);
    }

    /**
     * Fill an input field based on a criteria list, using the first value in the list.
     * @param input  Input to fill in
     * @param values List of values (the first one will be used)
     */
    public static  void fillInput(ValueBoxBase input, List values) {
        if (values == null || values.isEmpty()) {
            input.setValue(null);
        } else {
            input.setValue(values.get(0));
        }
    }

    /**
     * Fill an input field based on a criteria list, filling the field with comma-separated values.
     * @param input     Input to fill in
     * @param values    List of values (the first one will be used)
     * @param separator String separator to use between values
     */
    public static void fillInputMultiple(TextBox input, List values) {
        fillInputMultiple(input, values, ", ");
    }

    /**
     * Fill an input field based on a criteria list, filling the field with multiple separated values.
     * @param input     Input to fill in
     * @param values    List of values (the first one will be used)
     * @param separator String separator to use between values
     */
    public static void fillInputMultiple(TextBox input, List values, String separator) {
        if (values == null || values.isEmpty()) {
            input.setValue(null);
        } else {
            StringBuilder buffer = new StringBuilder();

            buffer.append(values.get(0));
            for (int i = 1; i < values.size(); i++) {
                buffer.append(separator);
                buffer.append(values.get(i));
            }

            input.setValue(buffer.toString());
        }
    }

    /**
     * Get a list of criteria based on an input field.
     * @param input  Input field to get data from
     * @return A single-item list containing the criteria, or null if criteria is empty.
     */
    public static  List getCriteriaList(ValueBoxBase input) {
        if (input.getValue() == null || GwtStringUtils.isEmpty(input.getText())) {
            return null;
        } else {
            List result = new ArrayList();
            result.add(input.getValue());
            return result;
        }
    }

    /**
     * Get a list of criteria based on an input field, assuming the input contains comma-separated values.
     * Clearly, this only makes sense if your input data doesn't normally contain comma characters.
     * @param input  Input field to get data from
     * @return A single-item list containing the criteria, or null if criteria is empty.
     */
    public static List getCriteriaListMultiple(TextBox input) {
        return getCriteriaListMultiple(input, ", *");
    }

    /**
     * Get a list of criteria based on an input field, assuming the input contains a list of separated values.
     * When you specify your regular expression, don't forget to take into account whitespace.
     * @param input  Input field to get data from
     * @param regex  Regex that should be used to split the the values into a list
     * @return A single-item list containing the criteria, or null if criteria is empty.
     */
    public static List getCriteriaListMultiple(ValueBoxBase input, String regex) {
        if (input.getValue() == null || GwtStringUtils.isEmpty(input.getText())) {
            return null;
        } else {
            List result = new ArrayList();

            for (String value : input.getValue().split(regex)) {
                if (!GwtStringUtils.isEmpty(value)) {
                    result.add(value);
                }
            }

            return result;
        }
    }

    /**
     * Get criteria based on an input field.
     * @param input  Input field to get data from
     * @return Value from the input field.
     */
    public static  T getCriteria(ValueBoxBase input) {
        if (input.getValue() == null || GwtStringUtils.isEmpty(input.getText())) {
            return null;
        } else {
            return input.getValue();
        }
    }

    /**
     * Get a list of criteria based on an input field.
     * @param input  Input field to get data from
     * @return A single-item list containing the criteria, or null if criteria is empty.
     */
    public static  List getCriteriaList(AbstractDropdownList input) {
        if (input.getSelectedObjectValue() == null) {
            return null;
        } else {
            List result = new ArrayList();
            result.add(input.getSelectedObjectValue());
            return result;
        }
    }

    /**
     * Get criteria based on an input field.
     * @param input  Input field to get data from
     * @return Value from the input field.
     */
    public static  T getCriteria(AbstractDropdownList input) {
        return input.getSelectedObjectValue();
    }

    /**
     * Build a list of criteria based on an input field.
     * @param input  Input field to get data from
     * @param time   Time to reset the returned data to
     * @return Date from the input field, with time reset.
     */
    public static List getCriteriaList(DateBox input) {
        List result = new ArrayList();
        result.add(input.getDatePicker().getValue());
        return result;
    }

    /**
     * Build criteria based on an input field.
     * @param input     Input field to get data from
     * @return Date from the input field, with time reset.
     */
    public static Date getCriteria(DateBox input) {
        return input.getDatePicker().getValue();
    }

    /**
     * Build date criteria based on an input field, resetting the time.
     * @param input       Input field to get data from
     * @param timestamp   Timestamp to reset the returned data to, like "23:59:59,999"
     * @return Date from the input field, with time reset.
     */
    public static Date getDateCriteria(DateBox input, String timestamp) {
        Date result = getCriteria(input);
        return GwtDateUtils.resetTimestamp(result, timestamp);
    }

    /**
     * Build date criteria based on an input field, treating as a start date (starts at 00:00:00,000).
     * @param input  Input field to get data from
     * @return Date from the input field, with time reset so it's a sensible start date.
     */
    public static Date getStartDateCriteria(DateBox input) {
        return getDateCriteria(input, START_TIMESTAMP);
    }

    /**
     * Build date criteria based on an input field, treating as an end date (ends at 23:59:59,999).
     * @param input  Input field to get data from
     * @return Date from the input field, with time reset so it's a sensible end date.
     */
    public static Date getEndDateCriteria(DateBox input) {
        return getDateCriteria(input, END_TIMESTAMP);
    }

    /** Format an integer, with a maximum width. */
    public static String formatInteger(Integer value, int width) {
        return formatString(value == null ? "" : String.valueOf(value), width);
    }

    /** Format an integer. */
    public static String formatInteger(Integer value) {
        return formatString(value == null ? "" : String.valueOf(value));
    }

    /** Format a long value, with a maximum width. */
    public static String formatLong(Long value, int width) {
        return formatString(value == null ? "" : String.valueOf(value), width);
    }

    /** Format a long value. */
    public static String formatLong(Long value) {
        return formatString(value == null ? "" : String.valueOf(value));
    }

    /** Format an enum value, with a maxium width. */
    public static String formatEnum(Enum value,  int width) {
        return formatString(value == null ? "" : value.name(), width);
    }

    /** Format an enum value. */
    public static String formatEnum(Enum value) {
        return formatString(value == null ? "" : value.name());
    }

    /** Format a boolean value, with a maxium width. */
    public static String formatBoolean(Boolean value, String trueValue, String falseValue, int width) {
        if (value == null) {
            return "";
        } else {
            return formatString(value.booleanValue() ? trueValue : falseValue, width);
        }
    }

    /** Format a boolean value. */
    public static String formatBoolean(Boolean value, String trueValue, String falseValue) {
        if (value == null) {
            return "";
        } else {
            return formatString(value.booleanValue() ? trueValue : falseValue);
        }
    }

    /** Format a string value, with a maximum width. */
    public static String formatString(String value, int width) {
        if (value == null || width == 0) {
            return "";
        } else {
            if (trim(value).length() <= width) {
                return trim(value);
            } else {
                return substring(trim(value), 0, width - 3) + "...";
            }
        }
    }

    /** Format a string value. */
    public static String formatString(String value) {
        return value == null ? "" : trim(value);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy