Search in sources :

Example 1 with ArchiveEventsCmd

use of com.cloud.api.command.user.event.ArchiveEventsCmd in project cosmic by MissionCriticalCloud.

the class ParamProcessWorker method setFieldValue.

private void setFieldValue(final Field field, final BaseCmd cmdObj, final Object paramObj, final Parameter annotation) throws IllegalArgumentException, ParseException {
    try {
        field.setAccessible(true);
        final CommandType fieldType = annotation.type();
        switch(fieldType) {
            case BOOLEAN:
                field.set(cmdObj, Boolean.valueOf(paramObj.toString()));
                break;
            case DATE:
                // and support both the date formats(Bug 9724)
                if (cmdObj instanceof ListEventsCmd || cmdObj instanceof DeleteEventsCmd || cmdObj instanceof ArchiveEventsCmd || cmdObj instanceof ArchiveAlertsCmd || cmdObj instanceof DeleteAlertsCmd) {
                    final boolean isObjInNewDateFormat = isObjInNewDateFormat(paramObj.toString());
                    if (isObjInNewDateFormat) {
                        final DateFormat newFormat = newInputFormat;
                        synchronized (newFormat) {
                            field.set(cmdObj, newFormat.parse(paramObj.toString()));
                        }
                    } else {
                        final DateFormat format = inputFormat;
                        synchronized (format) {
                            Date date = format.parse(paramObj.toString());
                            if (field.getName().equals("startDate")) {
                                date = messageDate(date, 0, 0, 0);
                            } else if (field.getName().equals("endDate")) {
                                date = messageDate(date, 23, 59, 59);
                            }
                            field.set(cmdObj, date);
                        }
                    }
                } else {
                    final DateFormat format = inputFormat;
                    synchronized (format) {
                        format.setLenient(false);
                        field.set(cmdObj, format.parse(paramObj.toString()));
                    }
                }
                break;
            case FLOAT:
                // value for optional parameters ...
                if (paramObj != null && isNotBlank(paramObj.toString())) {
                    field.set(cmdObj, Float.valueOf(paramObj.toString()));
                }
                break;
            case DOUBLE:
                // value for optional parameters ...
                if (paramObj != null && isNotBlank(paramObj.toString())) {
                    field.set(cmdObj, Double.valueOf(paramObj.toString()));
                }
                break;
            case INTEGER:
                // value for optional parameters ...
                if (paramObj != null && isNotBlank(paramObj.toString())) {
                    field.set(cmdObj, Integer.valueOf(paramObj.toString()));
                }
                break;
            case LIST:
                final List listParam = new ArrayList();
                final StringTokenizer st = new StringTokenizer(paramObj.toString(), ",");
                while (st.hasMoreTokens()) {
                    final String token = st.nextToken();
                    final CommandType listType = annotation.collectionType();
                    switch(listType) {
                        case INTEGER:
                            listParam.add(Integer.valueOf(token));
                            break;
                        case UUID:
                            if (token.isEmpty()) {
                                break;
                            }
                            final Long internalId = translateUuidToInternalId(token, annotation);
                            listParam.add(internalId);
                            break;
                        case LONG:
                            {
                                listParam.add(Long.valueOf(token));
                            }
                            break;
                        case SHORT:
                            listParam.add(Short.valueOf(token));
                            break;
                        case STRING:
                            listParam.add(token);
                            break;
                    }
                }
                field.set(cmdObj, listParam);
                break;
            case UUID:
                final Long internalId = translateUuidToInternalId(paramObj.toString(), annotation);
                field.set(cmdObj, internalId);
                break;
            case LONG:
                field.set(cmdObj, Long.valueOf(paramObj.toString()));
                break;
            case SHORT:
                field.set(cmdObj, Short.valueOf(paramObj.toString()));
                break;
            case STRING:
                if ((paramObj != null)) {
                    if (paramObj.toString().length() > annotation.length()) {
                        s_logger.error("Value greater than max allowed length " + annotation.length() + " for param: " + field.getName());
                        throw new InvalidParameterValueException("Value greater than max allowed length " + annotation.length() + " for param: " + field.getName());
                    } else {
                        field.set(cmdObj, paramObj.toString());
                    }
                }
                break;
            case TZDATE:
                field.set(cmdObj, DateUtil.parseTZDateString(paramObj.toString()));
                break;
            case MAP:
            default:
                field.set(cmdObj, paramObj);
                break;
        }
    } catch (final IllegalAccessException ex) {
        s_logger.error("Error initializing command " + cmdObj.getCommandName() + ", field " + field.getName() + " is not accessible.");
        throw new CloudRuntimeException("Internal error initializing parameters for command " + cmdObj.getCommandName() + " [field " + field.getName() + " is not accessible]");
    }
}
Also used : ArchiveEventsCmd(com.cloud.api.command.user.event.ArchiveEventsCmd) ListEventsCmd(com.cloud.api.command.user.event.ListEventsCmd) ArrayList(java.util.ArrayList) DeleteEventsCmd(com.cloud.api.command.user.event.DeleteEventsCmd) DeleteAlertsCmd(com.cloud.api.command.admin.resource.DeleteAlertsCmd) Date(java.util.Date) StringTokenizer(java.util.StringTokenizer) CommandType(com.cloud.api.BaseCmd.CommandType) ArchiveAlertsCmd(com.cloud.api.command.admin.resource.ArchiveAlertsCmd) InvalidParameterValueException(com.cloud.utils.exception.InvalidParameterValueException) CloudRuntimeException(com.cloud.utils.exception.CloudRuntimeException) SimpleDateFormat(java.text.SimpleDateFormat) DateFormat(java.text.DateFormat) ArrayList(java.util.ArrayList) List(java.util.List)

Aggregations

CommandType (com.cloud.api.BaseCmd.CommandType)1 ArchiveAlertsCmd (com.cloud.api.command.admin.resource.ArchiveAlertsCmd)1 DeleteAlertsCmd (com.cloud.api.command.admin.resource.DeleteAlertsCmd)1 ArchiveEventsCmd (com.cloud.api.command.user.event.ArchiveEventsCmd)1 DeleteEventsCmd (com.cloud.api.command.user.event.DeleteEventsCmd)1 ListEventsCmd (com.cloud.api.command.user.event.ListEventsCmd)1 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)1 InvalidParameterValueException (com.cloud.utils.exception.InvalidParameterValueException)1 DateFormat (java.text.DateFormat)1 SimpleDateFormat (java.text.SimpleDateFormat)1 ArrayList (java.util.ArrayList)1 Date (java.util.Date)1 List (java.util.List)1 StringTokenizer (java.util.StringTokenizer)1