/* * Licensed Materials - Property of Perforce Software, Inc. * © Copyright Perforce Software, Inc. 2014, 2021 * © Copyright IBM Corp. 2009, 2014 * © Copyright ILOG 1996, 2009 * All Rights Reserved. * * Note to U.S. Government Users Restricted Rights: * The Software and Documentation were developed at private expense and * are "Commercial Items" as that term is defined at 48 CFR 2.101, * consisting of "Commercial Computer Software" and * "Commercial Computer Software Documentation", as such terms are * used in 48 CFR 12.212 or 48 CFR 227.7202-1 through 227.7202-4, * as applicable. */ package datasource.explorer; import ilog.cpl.css.function.IlpCSSFunction; import ilog.cpl.graphic.IlpGraphicView; import ilog.cpl.model.IlpAttribute; import ilog.cpl.model.IlpRepresentationObject; import ilog.cpl.service.IlpContext; import shared.ResourceUtils; public class ByteFunction implements IlpCSSFunction { /** * Returns the name of the function, that will be known in the style sheet. */ Override public String getName() { return "byte"; } /** * Returns the delimiters of the function parameters. It is strongly * recommanded to return at least the comma (","). The default implementation * returns ",". * * @return a string containing all the accepted delimiters. A null or empty * return value means there is no delimiter, so all the parameters are * returned as a single token. */ Override public String getDelimiters() { return ","; } /** * Returns true whether the delimiters are returned also as token. * * @return true means the delimiters are returned as token, false means the * delimiters are discarded (default). */ Override public boolean returnDelimitersAsToken() { return false; } /** * Calls the function. * * @param args * The parameters of the functions * @param type * the expected returned type. May be null. It is wise to return an * object compatible with the expected type, or a String. * @param appc * the application context. * @param view * the graphic view * @param ro * the current representation object * @param attribute * the business attribute * @return the value computed by this function */ Override public Object call(Object[] args, Class<?> type, IlpContext appc, IlpGraphicView view, IlpRepresentationObject ro, IlpAttribute attribute) { if (args.length > 0) { Object attrValue = args[0]; if (attrValue instanceof Number) { long value = ((Number) attrValue).longValue(); if (value < 1024) { if (value == 0) return ""; return ResourceUtils.getString("label.byte.minValue"); } else if (value < 1024 * 1024) { value = value >> 10; return String.valueOf(value) + " " + ResourceUtils.getString("label.byte.kb"); } else { value = value >> 20; return String.valueOf(value) + " " + ResourceUtils.getString("label.byte.mb"); } } else return attrValue; } throw new IllegalArgumentException("bad parameters"); } }