Java Code Examples for org.apache.commons.lang.StringUtils#left()

The following examples show how to use org.apache.commons.lang.StringUtils#left() .
Example 1
Project: openhab1-addons   File: InformationResponseMessage.java    License: Eclipse Public License 2.0 6 votes vote down vote up
@Override
protected void parsePayLoad() {
    Matcher matcher = RESPONSE_PATTERN.matcher(payLoad);
    if (matcher.matches()) {
        MAC = matcher.group(1);
        year = Integer.parseInt(matcher.group(2), 16) + 2000;
        month = Integer.parseInt(matcher.group(3), 16);
        minutes = Integer.parseInt(matcher.group(4), 16);
        logAddress = (Integer.parseInt(matcher.group(5), 16) - 278528) / 32;
        powerState = (matcher.group(6).equals("01"));
        hertz = Integer.parseInt(matcher.group(7), 16);
        hardwareVersion = StringUtils.left(matcher.group(8), 4) + "-" + StringUtils.mid(matcher.group(8), 4, 4)
                + "-" + StringUtils.right(matcher.group(8), 4);
        firmwareVersion = Integer.parseInt(matcher.group(9), 16);
        deviceType = intToDeviceType(Integer.parseInt(matcher.group(10), 16));
    } else {
        logger.debug("Plugwise protocol RoleCallResponseMessage error: {} does not match", payLoad);
    }
}
 
Example 2
Project: kfs   File: AssetGlobal.java    License: GNU Affero General Public License v3.0 6 votes vote down vote up
/** 
 * Sets the universityFiscalPeriodName attribute.
 * 
 * @param universityFiscalPeriodName The universityFiscalPeriodName to set.
 */
public void setUniversityFiscalPeriodName(String universityFiscalPeriodName) {
    if (StringUtils.isBlank(universityFiscalPeriodName)) {
        if (this.financialDocumentPostingPeriodCode != null && this.financialDocumentPostingYear != null) {
            universityFiscalPeriodName = this.financialDocumentPostingPeriodCode + this.financialDocumentPostingYear;
        }
    }
    
    String THIRTEEN = "13";
    if (StringUtils.isNotBlank(universityFiscalPeriodName) && StringUtils.left(universityFiscalPeriodName, 2).equals(THIRTEEN)) {
        String period = StringUtils.left(universityFiscalPeriodName, 2);
        Integer year = new Integer(StringUtils.right(universityFiscalPeriodName, 4));
        AccountingPeriod accountingPeriod = getAccountingPeriodService().getByPeriod(period, year);
        setAccountingPeriod(accountingPeriod);
    }
    
    this.universityFiscalPeriodName = universityFiscalPeriodName;
}
 
Example 3
Project: Aooms   File: FileUtils.java    License: Apache License 2.0 5 votes vote down vote up
/** 
 * 链接PATH前处理 
 *  
 * @param path 
 * @return 
 */  
public static String trimLeftPath(String path) {  
    if (isFile(path))  
        return path;  
    path = replacePath(path);  
    String top = StringUtils.left(path, 1);  
    if (StringUtils.equalsIgnoreCase(SLASH_TWO, top))  
        return StringUtils.substring(path, 1);  
    return path;  
}
 
Example 4
Project: SuperBoot   File: SensitiveInfoUtils.java    License: MIT License 5 votes vote down vote up
/**
 * [中文姓名] 只显示第一个汉字,其他隐藏为2个星号<例子:李**>
 *
 * @param fullName 全名
 * @return
 */
public static String chineseName(String fullName) {
    if (StringUtils.isBlank(fullName)) {
        return "";
    }
    String name = StringUtils.left(fullName, 1);
    return StringUtils.rightPad(name, StringUtils.length(fullName), "*");
}
 
Example 5
Project: antsdb   File: VaporizingRow.java    License: GNU Lesser General Public License v3.0 5 votes vote down vote up
@Override
public String toString() {
    StringBuilder buf = new StringBuilder();
    buf.append("version:");
    buf.append(this.version);
    buf.append('\n');
    buf.append("max column id:");
    buf.append(getMaxColumnId());
    buf.append('\n');
    buf.append("trx timestamp:");
    buf.append(getTrxTimestamp());
    buf.append('\n');
    buf.append("key:");
    buf.append(BytesUtil.toHex8(getKey()));
    for (int i = 0; i <= getMaxColumnId(); i++) {
        Object value = get(i);
        if (value != null) {
            buf.append('\n');
            buf.append(i);
            buf.append(":");
            String output;
            if (value instanceof byte[]) {
                output = BytesUtil.toHex((byte[]) value);
            }
            else {
                output = value.toString();
            }
            if (output.length() >= 80) {
                output = StringUtils.left(output, 80) + "...";
            }
            buf.append(output);
        }
    }
    return buf.toString();
}
 
Example 6
Project: antsdb   File: FuncLeft.java    License: GNU Lesser General Public License v3.0 5 votes vote down vote up
@Override
public long eval(VdmContext ctx, Heap heap, Parameters params, long pRecord) {
       long pString = this.parameters.get(0).eval(ctx, heap, params, pRecord);
       if (pString == 0) {
       	return 0;
       }
       long pLength = this.parameters.get(1).eval(ctx, heap, params, pRecord);
       if (pLength == 0) {
       	return 0;
       }
       String str = (String)FishObject.get(heap, AutoCaster.toString(heap, pString));
       Long length = (Long)FishObject.get(heap, AutoCaster.toNumber(heap, pLength));
       String result = StringUtils.left(str, (int)(long)length);
       return Unicode16.allocSet(heap, result);
}
 
Example 7
Project: amazon-ecs-plugin   File: ECSService.java    License: MIT License 5 votes vote down vote up
public ECSService(String credentialsId, String regionName) {
    this.clientSupplier = () -> {
        ProxyConfiguration proxy = Jenkins.get().proxy;
        ClientConfiguration clientConfiguration = new ClientConfiguration();

        if (proxy != null) {
            clientConfiguration.setProxyHost(proxy.name);
            clientConfiguration.setProxyPort(proxy.port);
            clientConfiguration.setProxyUsername(proxy.getUserName());
            clientConfiguration.setProxyPassword(proxy.getPassword());
        }

        // Default is 3. 10 helps us actually utilize the SDK's backoff strategy
        // The strategy will wait up to 20 seconds per request (after multiple failures)
        clientConfiguration.setMaxErrorRetry(10);

        AmazonECSClientBuilder builder = AmazonECSClientBuilder
                .standard()
                .withClientConfiguration(clientConfiguration)
                .withRegion(regionName);

        AmazonWebServicesCredentials credentials = getCredentials(credentialsId);
        if (credentials != null) {
            if (LOGGER.isLoggable(Level.FINE)) {
                String awsAccessKeyId = credentials.getCredentials().getAWSAccessKeyId();
                String obfuscatedAccessKeyId = StringUtils.left(awsAccessKeyId, 4) + StringUtils.repeat("*", awsAccessKeyId.length() - (2 * 4)) + StringUtils.right(awsAccessKeyId, 4);
                LOGGER.log(Level.FINE, "Connect to Amazon ECS with IAM Access Key {1}", new Object[]{obfuscatedAccessKeyId});
            }
            builder
                    .withCredentials(credentials);
        }
        LOGGER.log(Level.FINE, "Selected Region: {0}", regionName);

        return builder.build();
    };
}
 
Example 8
/**
 * @see org.kuali.kfs.module.ld.service.LaborTransactionDescriptionService#getTransactionDescription(org.kuali.kfs.gl.businessobject.Transaction)
 */
public String getTransactionDescription(Transaction transaction) {
    String documentTypeCode = transaction.getFinancialDocumentTypeCode();
    String description = this.getTransactionDescription(documentTypeCode);
    description = StringUtils.isNotEmpty(description) ? description : transaction.getTransactionLedgerEntryDescription();

    // make sure the length of the description cannot excess the specified maximum
    int transactionDescriptionMaxLength = SpringContext.getBean(DataDictionaryService.class).getAttributeMaxLength(transaction.getClass(), KFSPropertyConstants.TRANSACTION_LEDGER_ENTRY_DESC);
    if (StringUtils.isNotEmpty(description) && description.length() > transactionDescriptionMaxLength) {
        description = StringUtils.left(description, transactionDescriptionMaxLength);
    }

    return description;
}
 
Example 9
/**
 * Set accountingPeriod based on incoming paramater.
 * @param accountingPeriodString in the form of [period][year]
 */
public void setAccountingPeriodCompositeString(String accountingPeriodString) {
    if (StringUtils.isNotBlank(accountingPeriodString)) {
        String period = StringUtils.left(accountingPeriodString, 2);
        Integer year = new Integer(StringUtils.right(accountingPeriodString, 4));
        AccountingPeriod accountingPeriod = getAccountingPeriodService().getByPeriod(period, year);
        setAccountingPeriod(accountingPeriod);
    }
}
 
Example 10
/**
 * Set up PCDO document description as "cardholder name-card number (which is 4 digits)-chartOfAccountsCode-default account"
 *
 * @param pcardDocument
 */
protected void setupDocumentDescription(ProcurementCardDocument pcardDocument) {
    ProcurementCardHolder cardHolder = pcardDocument.getProcurementCardHolder();

    if (ObjectUtils.isNotNull(cardHolder)) {
        String cardHolderName = StringUtils.left(cardHolder.getCardHolderName(), 23);
        String lastFourDigits = StringUtils.right(cardHolder.getTransactionCreditCardNumber(), 4);
        String chartOfAccountsCode = cardHolder.getChartOfAccountsCode();
        String accountNumber = cardHolder.getAccountNumber();

        String description = MessageFormat.format(DOCUMENT_DESCRIPTION_PATTERN, cardHolderName, lastFourDigits, chartOfAccountsCode, accountNumber);
        pcardDocument.getDocumentHeader().setDocumentDescription(description);
    }
}
 
Example 11
Project: kfs   File: VoucherForm.java    License: GNU Affero General Public License v3.0 5 votes vote down vote up
/**
 * util method to get posting period code out of selectedAccountingPeriod
 * 
 * @return String
 */
protected String getSelectedPostingPeriodCode() {
    String periodCode = null;
    String selectedPeriod = getSelectedAccountingPeriod();
    if (StringUtils.isNotBlank(selectedPeriod)) {
        periodCode = StringUtils.left(selectedPeriod, 2);
    }
    return periodCode;
}
 
Example 12
/**
 * Sets the accountingPeriod if in period 13
 * @param accountingPeriodString
 * TODO remove hardcoding
 */
public void setAccountingPeriodCompositeString(String accountingPeriodString) {
    String THIRTEEN = "13";
    if (StringUtils.isNotBlank(accountingPeriodString) && StringUtils.left(accountingPeriodString, 2).equals(THIRTEEN)) {
        String period = StringUtils.left(accountingPeriodString, 2);
        Integer year = new Integer(StringUtils.right(accountingPeriodString, 4));
        AccountingPeriod accountingPeriod = getAccountingPeriodService().getByPeriod(period, year);
        setAccountingPeriod(accountingPeriod);
    }
}
 
Example 13
Project: cloudstack   File: SolidFirePrimaryDataStoreDriver.java    License: Apache License 2.0 4 votes vote down vote up
@Override
public void takeSnapshot(SnapshotInfo snapshotInfo, AsyncCompletionCallback<CreateCmdResult> callback) {
    CreateCmdResult result;

    try {
        VolumeInfo volumeInfo = snapshotInfo.getBaseVolume();
        VolumeVO volumeVO = volumeDao.findById(volumeInfo.getId());

        long sfVolumeId = Long.parseLong(volumeVO.getFolder());
        long storagePoolId = volumeVO.getPoolId();

        SolidFireUtil.SolidFireConnection sfConnection = SolidFireUtil.getSolidFireConnection(storagePoolId, storagePoolDetailsDao);

        SolidFireUtil.SolidFireVolume sfVolume = SolidFireUtil.getVolume(sfConnection, sfVolumeId);

        StoragePoolVO storagePool = storagePoolDao.findById(storagePoolId);

        long capacityBytes = storagePool.getCapacityBytes();
        // getUsedBytes(StoragePool) will not include the bytes of the proposed new volume or snapshot because
        // updateSnapshotDetails has not yet been called for this new volume or snapshot
        long usedBytes = getUsedBytes(storagePool);
        long sfVolumeSize = sfVolume.getTotalSize();

        usedBytes += sfVolumeSize;

        // For creating a volume or a snapshot, we need to check to make sure a sufficient amount of space remains in the primary storage.
        // For the purpose of "charging" these bytes against storage_pool.capacity_bytes, we take the full size of the SolidFire volume
        // that is serving as the volume the snapshot is of (either a new SolidFire volume or a SolidFire snapshot).
        if (usedBytes > capacityBytes) {
            throw new CloudRuntimeException("Insufficient amount of space remains in this primary storage to take a snapshot");
        }

        storagePool.setUsedBytes(usedBytes);

        SnapshotObjectTO snapshotObjectTo = (SnapshotObjectTO)snapshotInfo.getTO();

        if (shouldTakeSnapshot(snapshotInfo.getId())) {
            // We are supposed to take a SolidFire snapshot to serve as the back-end for our CloudStack volume snapshot.

            String sfNewSnapshotName = volumeInfo.getName() + "-" + snapshotInfo.getUuid();

            int maxSnapshotNameLength = 64;
            int trimRequired = sfNewSnapshotName.length() - maxSnapshotNameLength;

            if (trimRequired > 0) {
                sfNewSnapshotName = StringUtils.left(volumeInfo.getName(), (volumeInfo.getName().length() - trimRequired)) + "-" + snapshotInfo.getUuid();
            }

            long sfNewSnapshotId = SolidFireUtil.createSnapshot(sfConnection, sfVolumeId, SolidFireUtil.getSolidFireVolumeName(sfNewSnapshotName),
                    getSnapshotAttributes(snapshotInfo));

            updateSnapshotDetails(snapshotInfo.getId(), volumeInfo.getId(), sfVolumeId, sfNewSnapshotId, storagePoolId, sfVolumeSize);

            snapshotObjectTo.setPath("SfSnapshotId=" + sfNewSnapshotId);
        }
        else {
            // We are supposed to create a new SolidFire volume to serve as the back-end for our CloudStack volume snapshot.

            String sfNewVolumeName = volumeInfo.getName() + "-" + snapshotInfo.getUuid();

            final Iops iops = getIops(MIN_IOPS_FOR_SNAPSHOT_VOLUME, MAX_IOPS_FOR_SNAPSHOT_VOLUME, storagePoolId);

            long sfNewVolumeId = SolidFireUtil.createVolume(sfConnection, SolidFireUtil.getSolidFireVolumeName(sfNewVolumeName), sfVolume.getAccountId(),
                    sfVolumeSize, sfVolume.isEnable512e(), getSnapshotAttributes(snapshotInfo), iops.getMinIops(), iops.getMaxIops(), iops.getBurstIops());

            SolidFireUtil.SolidFireVolume sfNewVolume = SolidFireUtil.getVolume(sfConnection, sfNewVolumeId);

            updateSnapshotDetails(snapshotInfo.getId(), sfNewVolumeId, storagePoolId, sfVolumeSize, sfNewVolume.getIqn());

            snapshotObjectTo.setPath("SfVolumeId=" + sfNewVolumeId);
        }

        // Now that we have successfully created a volume or a snapshot, update the space usage in the cloud.storage_pool table
        // (even though cloud.storage_pool.used_bytes is likely no longer in use).
        storagePoolDao.update(storagePoolId, storagePool);

        CreateObjectAnswer createObjectAnswer = new CreateObjectAnswer(snapshotObjectTo);

        result = new CreateCmdResult(null, createObjectAnswer);

        result.setResult(null);
    }
    catch (Exception ex) {
        LOGGER.debug(SolidFireUtil.LOG_PREFIX + "Failed to take CloudStack snapshot: " + snapshotInfo.getId(), ex);

        result = new CreateCmdResult(null, new CreateObjectAnswer(ex.toString()));

        result.setResult(ex.toString());
    }

    callback.complete(result);
}
 
Example 14
Project: dubbox   File: StringUtil.java    License: Apache License 2.0 4 votes vote down vote up
public static String left(String str, int length) {
	return StringUtils.left(str, length);
}
 
Example 15
Project: zstack   File: RESTApiFacadeImpl.java    License: Apache License 2.0 4 votes vote down vote up
private static String getApiResult(APIEvent e) {
    String apiResult = RESTApiDecoder.dump(e);
    apiResult = StringUtils.length(apiResult) > restResultMaxLength ?
            StringUtils.left(apiResult, restResultMaxLength) : apiResult;
    return apiResult;
}
 
Example 16
Project: seldon-server   File: ItemService.java    License: Apache License 2.0 4 votes vote down vote up
private static void truncateItemName(ItemBean itemBean, int newLength) {
    final String name = itemBean.getName();
    final String truncatedName = StringUtils.left(name, newLength);
    logger.info("Truncating itemBean name '" + name + "' to '" + truncatedName + "'");
    itemBean.setName(truncatedName);
}
 
Example 17
Project: seldon-server   File: UserService.java    License: Apache License 2.0 4 votes vote down vote up
private static void truncateUsername(User user) {
    final String username = user.getUsername();
    final String truncated = StringUtils.left(username, USERNAME_MAX_LENGTH);
    user.setUsername(truncated);
}
 
Example 18
Project: kfs   File: AssetGlobalRule.java    License: GNU Affero General Public License v3.0 4 votes vote down vote up
@Override
protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) {
    AssetGlobal assetGlobal = (AssetGlobal) document.getNewMaintainableObject().getBusinessObject();
    boolean success = true;
    success &= super.processCustomSaveDocumentBusinessRules(document);
    if (GlobalVariables.getMessageMap().hasErrors()) {
        return false;
    }

    String acquisitionTypeCode = assetGlobal.getAcquisitionTypeCode();
    String statusCode = assetGlobal.getInventoryStatusCode();

    // no need to validate specific fields if document is "Asset Separate"
    if (!getAssetGlobalService().isAssetSeparate(assetGlobal)) {
        success &= validateAccount(assetGlobal);
        if (StringUtils.isNotBlank(acquisitionTypeCode) && StringUtils.isNotBlank(statusCode)) {
            // check if status code and acquisition type code combination is valid
            success &= /*REFACTORME*/SpringContext.getBean(ParameterEvaluatorService.class).getParameterEvaluator(AssetGlobal.class, CamsConstants.Parameters.VALID_ASSET_STATUSES_BY_ACQUISITION_TYPE, CamsConstants.Parameters.INVALID_ASSET_STATUSES_BY_ACQUISITION_TYPE, acquisitionTypeCode, statusCode).evaluateAndAddError(AssetGlobal.class, CamsPropertyConstants.AssetGlobal.INVENTORY_STATUS_CODE, MAINTAINABLE_ERROR_PREFIX + CamsPropertyConstants.AssetGlobal.INVENTORY_STATUS_CODE);
        }
        success &= validateAssetType(assetGlobal);
        if (isCapitalStatus(assetGlobal)) {
            success &= validateVendorAndManufacturer(assetGlobal);
        }

        success &= validatePaymentCollection(document, assetGlobal);
    }
    else {
        // append doc type to existing doc header description
        if (!document.getDocumentHeader().getDocumentDescription().toLowerCase().contains(CamsConstants.AssetSeparate.SEPARATE_AN_ASSET_DESCRIPTION.toLowerCase())) {
            Integer maxDocumentDescription = ddService.getAttributeMaxLength(DocumentHeader.class, KRADPropertyConstants.DOCUMENT_DESCRIPTION);
            String documentDescription = CamsConstants.AssetSeparate.SEPARATE_AN_ASSET_DESCRIPTION + " " + document.getDocumentHeader().getDocumentDescription();
            documentDescription = StringUtils.left(documentDescription, maxDocumentDescription);
            document.getDocumentHeader().setDocumentDescription(documentDescription);
        }
    }

    // System shall only generate GL entries if we have an incomeAssetObjectCode for this acquisitionTypeCode and the statusCode
    // is for capital assets
    //  GLs should not be generated while separating assets too
    if ((success && !getAssetGlobalService().isAssetSeparate(assetGlobal) && super.processCustomSaveDocumentBusinessRules(document)) && getAssetAcquisitionTypeService().hasIncomeAssetObjectCode(acquisitionTypeCode) && this.isCapitalStatus(assetGlobal)) {
        if (success &= validateAcquisitionIncomeObjectCode(assetGlobal)) {
            // create poster
            AssetGlobalGeneralLedgerPendingEntrySource assetGlobalGlPoster = new AssetGlobalGeneralLedgerPendingEntrySource((FinancialSystemDocumentHeader) document.getDocumentHeader());
            // create postables
            getAssetGlobalService().createGLPostables(assetGlobal, assetGlobalGlPoster);

            if (SpringContext.getBean(GeneralLedgerPendingEntryService.class).generateGeneralLedgerPendingEntries(assetGlobalGlPoster)) {
                assetGlobal.setGeneralLedgerPendingEntries(assetGlobalGlPoster.getPendingEntries());
            }
            else {
                assetGlobalGlPoster.getPendingEntries().clear();
            }
        }
    }

    return success;
}
 
Example 19
/**
 * Processes rules when saving this global.
 *
 * @param document MaintenanceDocument type of document to be processed.
 * @return boolean true when success
 * @see org.kuali.rice.kns.maintenance.rules.MaintenanceDocumentRuleBase#processCustomSaveDocumentBusinessRules(org.kuali.rice.kns.document.MaintenanceDocument)
 */
@Override
protected boolean processCustomSaveDocumentBusinessRules(MaintenanceDocument document) {
    boolean valid = true;
    AssetRetirementGlobal assetRetirementGlobal = (AssetRetirementGlobal) document.getNewMaintainableObject().getBusinessObject();

    setupConvenienceObjects();
    valid &= assetRetirementValidation(assetRetirementGlobal, document);

    if ((valid && super.processCustomSaveDocumentBusinessRules(document)) && !getAssetRetirementService().isAssetRetiredByMerged(assetRetirementGlobal) && !allPaymentsFederalOwned(assetRetirementGlobal)) {
        // Check if Asset Object Code and Object code exists and active.
        if (valid &= validateObjectCodesForGLPosting(assetRetirementGlobal)) {
            // create poster
            AssetRetirementGeneralLedgerPendingEntrySource assetRetirementGlPoster = new AssetRetirementGeneralLedgerPendingEntrySource((FinancialSystemDocumentHeader) document.getDocumentHeader());
            // create postables
            getAssetRetirementService().createGLPostables(assetRetirementGlobal, assetRetirementGlPoster);

            if (SpringContext.getBean(GeneralLedgerPendingEntryService.class).generateGeneralLedgerPendingEntries(assetRetirementGlPoster)) {
                assetRetirementGlobal.setGeneralLedgerPendingEntries(assetRetirementGlPoster.getPendingEntries());
            }
            else {
                assetRetirementGlPoster.getPendingEntries().clear();
            }
        }
    }

    // add doc header description if retirement reason is "MERGED"
    if (CamsConstants.AssetRetirementReasonCode.MERGED.equals(assetRetirementGlobal.getRetirementReasonCode())) {
        if (!document.getDocumentHeader().getDocumentDescription().toLowerCase().contains(CamsConstants.AssetRetirementGlobal.MERGE_AN_ASSET_DESCRIPTION.toLowerCase())) {
            Integer maxDocumentDescription = ddService.getAttributeMaxLength(DocumentHeader.class, KRADPropertyConstants.DOCUMENT_DESCRIPTION);
            String documentDescription = CamsConstants.AssetRetirementGlobal.MERGE_AN_ASSET_DESCRIPTION + " " + document.getDocumentHeader().getDocumentDescription();
            documentDescription = StringUtils.left(documentDescription, maxDocumentDescription);
            document.getDocumentHeader().setDocumentDescription(documentDescription);
        }
    }
    // get asset locks
    List<Long> capitalAssetNumbers = retrieveAssetNumbersForLocking(assetRetirementGlobal);
    valid &= !this.getCapitalAssetManagementModuleService().isAssetLocked(capitalAssetNumbers, DocumentTypeName.ASSET_RETIREMENT_GLOBAL, document.getDocumentNumber());

    return valid;
}
 
Example 20
Project: openhab1-addons   File: EBusCommandProcessor.java    License: Eclipse Public License 2.0 4 votes vote down vote up
/**
 * @param provider
 * @param itemName
 * @param type
 * @return
 */
public byte[] composeSendData(EBusBindingProvider provider, String itemName, Command command) {

    if (configurationProvider == null || configurationProvider.isEmpty()) {
        logger.debug("eBus configuration provider not ready, can't get send data yet.");
        return null;
    }

    byte[] data = null;

    String cmd = provider.getCommand(itemName);
    Byte dst = provider.getTelegramDestination(itemName);
    Byte src = provider.getTelegramSource(itemName);

    HashMap<String, Object> values = null;

    if (StringUtils.isEmpty(cmd)) {
        // use id instead
        String id = provider.getId(itemName);
        if (!StringUtils.isEmpty(id)) {
            String[] split = StringUtils.split(id, ".");

            if (split.length > 1) {
                cmd = split[0] + "." + split[1];
            }
        }
    }

    if (src == null) {
        src = connector.getSenderId();
    }

    if (command == null) {
        // polling
        data = composeEBusTelegram(cmd, dst, src, values);

    } else {
        String setValue = provider.getSet(itemName);
        int index = StringUtils.lastIndexOf(setValue, ".");
        String cmdId = StringUtils.left(setValue, index);
        String valueName = StringUtils.substring(setValue, index + 1);

        // try to convert command to a supported value
        Object value = StateUtils.convertFromState(command);
        if (value != null) {
            values = new HashMap<String, Object>();
            values.put(valueName, value);
        }

        data = composeEBusTelegram(cmdId, dst, src, values);
    }

    // first try, data-ON, data-OFF, etc.
    if (data == null) {
        String type = command != null ? command.toString().toLowerCase() : null;
        if (StringUtils.isNotEmpty(type)) {
            data = provider.getTelegramData(itemName, type);
        }
    }

    if (data == null) {
        // ok, try data param
        data = provider.getTelegramData(itemName);
    }

    return data;
}