com.redhat.rhn.frontend.xmlrpc.packages.PackageHelper.java Source code

Java tutorial

Introduction

Here is the source code for com.redhat.rhn.frontend.xmlrpc.packages.PackageHelper.java

Source

/**
 * Copyright (c) 2009--2012 Red Hat, Inc.
 *
 * This software is licensed to you under the GNU General Public License,
 * version 2 (GPLv2). There is NO WARRANTY for this software, express or
 * implied, including the implied warranties of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
 * along with this software; if not, see
 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
 *
 * Red Hat trademarks are not licensed under GPLv2. No permission is
 * granted to use or replicate Red Hat trademarks that are incorporated
 * in this software or its documentation.
 */
package com.redhat.rhn.frontend.xmlrpc.packages;

import com.redhat.rhn.common.db.datasource.DataResult;
import com.redhat.rhn.common.translation.Translator;
import com.redhat.rhn.domain.rhnpackage.Package;
import com.redhat.rhn.domain.rhnpackage.PackageEvr;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.manager.rhnpackage.PackageManager;

import org.apache.commons.lang.StringUtils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * PackageHelper
 * @version $Rev$
 */
public class PackageHelper {

    /**
     * Private constructor
     */
    private PackageHelper() {
    }

    /**
     * Utility method to convert a package to a map.
     * @param pkg The package to convert
     * @param user The user requesting the package conversion (used in calculating the
     * providing_channels attribute)
     * @return Returns a map representation of a package
     */
    public static Map packageToMap(Package pkg, User user) {

        Map pkgMap = new HashMap();

        // deal with the providing channels first
        DataResult dr = PackageManager.providingChannels(user, pkg.getId());
        List channelLabels = new ArrayList();
        for (Iterator itr = dr.iterator(); itr.hasNext();) {
            Map map = (Map) itr.next();
            channelLabels.add(map.get("label"));
        }
        pkgMap.put("providing_channels", channelLabels);

        // now deal with the actual package object.
        if (pkg.getPackageName() == null) {
            addEntry(pkgMap, "name", "");
        } else {
            addEntry(pkgMap, "name", StringUtils.defaultString(pkg.getPackageName().getName()));
        }
        if (pkg.getPackageEvr() == null) {
            addEntry(pkgMap, "epoch", "");
            addEntry(pkgMap, "version", "");
            addEntry(pkgMap, "release", "");
        } else {
            PackageEvr evr = pkg.getPackageEvr();
            addEntry(pkgMap, "epoch", StringUtils.defaultString(evr.getEpoch()));
            addEntry(pkgMap, "version", StringUtils.defaultString(evr.getVersion()));
            addEntry(pkgMap, "release", StringUtils.defaultString(evr.getRelease()));
        }

        if (pkg.getPackageArch() == null) {
            addEntry(pkgMap, "arch_label", "");
        } else {
            addEntry(pkgMap, "arch_label", pkg.getPackageArch().getLabel());
        }
        addEntry(pkgMap, "id", pkg.getId());
        addEntry(pkgMap, "build_host", StringUtils.defaultString(pkg.getBuildHost()));
        addEntry(pkgMap, "description", StringUtils.defaultString(pkg.getDescription()));
        addEntry(pkgMap, "checksum", StringUtils.defaultString(pkg.getChecksum().getChecksum()));
        addEntry(pkgMap, "checksum_type",
                StringUtils.defaultString(pkg.getChecksum().getChecksumType().getLabel()));
        addEntry(pkgMap, "vendor", StringUtils.defaultString(pkg.getVendor()));
        addEntry(pkgMap, "summary", StringUtils.defaultString(pkg.getSummary()));
        addEntry(pkgMap, "cookie", StringUtils.defaultString(pkg.getCookie()));
        addEntry(pkgMap, "license", StringUtils.defaultString(pkg.getCopyright()));
        addEntry(pkgMap, "path", StringUtils.defaultString(pkg.getPath()));
        addEntry(pkgMap, "file", StringUtils.defaultString(pkg.getFile()));
        addEntry(pkgMap, "build_date", Translator.date2String(pkg.getBuildTime()));
        addEntry(pkgMap, "last_modified_date", Translator.date2String(pkg.getLastModified()));

        Long sz = pkg.getPackageSize();
        addEntry(pkgMap, "size", (sz == null) ? "" : String.valueOf(sz));

        sz = pkg.getPayloadSize();
        addEntry(pkgMap, "payload_size", (sz == null) ? "" : String.valueOf(sz));

        return pkgMap;
    }

    private static void addEntry(Map map, String key, Object value) {
        map.put(key, value);
    }

    /**
     * Parse filename from package path
     * @param path package path
     * @return filename
     */
    public static String getPackageFileFromPath(String path) {
        String[] parts = StringUtils.split(path, '/');
        if (parts != null && parts.length > 0) {
            return parts[parts.length - 1];
        }
        return null;
    }
}