Package ariba.ui.widgets

Source Code of ariba.ui.widgets.HideBannerImageConditionHandler

package ariba.ui.widgets;

import ariba.ui.aribaweb.util.AWResourceManager;
import ariba.ui.aribaweb.util.AWResource;
import ariba.ui.aribaweb.util.AWBrand;
import ariba.ui.aribaweb.util.AWImageInfo;
import ariba.ui.aribaweb.util.AWUtil;
import ariba.ui.aribaweb.core.AWConcreteApplication;
import ariba.ui.aribaweb.core.AWRequestContext;
import ariba.ui.aribaweb.core.AWChecksum;
import ariba.ui.aribaweb.core.AWSession;

import java.io.InputStream;

/**
     Prod Image Branded | Banner Image Branded | Prod Image Wide | Display
     N                    N                       x                 Normal
     N                    Y                       x                 Normal
     Y                    N                       N                  Hide banner image
     Y                    N                       Y                 Hide banner image, display prod image in banner area
     Y                    Y                       x                 Normal
*/
public class HideBannerImageConditionHandler extends ConditionHandler
{

    private static long ProductImageCRC = 0;
    private static long BannerImageCRC = 0;

    public boolean evaluateCondition (AWRequestContext requestContext)
    {
        AWImageInfo imageInfo =
            productImageBrandedOnly(requestContext);
        return imageInfo != null;
    }

    /**
         Returns the product image's info if the product image is branded AND
         the banner image is not branded
     */
    public static AWImageInfo productImageBrandedOnly (AWRequestContext requestContext)
    {
        setupSystemImagesCRC();
        AWConcreteApplication application =
                (AWConcreteApplication)requestContext.application();
        if (application.allowBrandingImages()) {
            AWBrand brand =
                    application.getBrand(requestContext);
            if (brand != null) {
                AWResourceManager rm = application.resourceManager();
                String brandVersion = brand.getSessionVersion(requestContext);
                rm = rm.resolveBrand(brand.getName(), brandVersion);
                boolean isProductImageBranded =
                    isImageBranded("cmdbar_prod.gif", ProductImageCRC, rm, requestContext, brandVersion);
                if (isProductImageBranded) {
                    boolean isBannerImageBranded =
                        isImageBranded("cmdbar_banner.gif", BannerImageCRC, rm, requestContext, brandVersion);
                    if (!isBannerImageBranded) {
                        return rm.imageInfoForName("cmdbar_prod.gif");
                    }
                }
            }
        }
        return null;
    }

    private static boolean isImageBranded (String imageName, long systemImageCRC,
                                           AWResourceManager rm, AWRequestContext requestContext,
                                           String brandVersion)
    {
        String key = brandVersion + imageName;
        Boolean isImagedBranded = null;
        AWSession session = requestContext.session(false);
        if (session != null) {
            isImagedBranded = (Boolean)session.dict().get(key);
        }
        if (isImagedBranded == null) {
            AWResource resource = rm.resourceNamed(imageName, true);
            long crc = imageCRC(resource);
            isImagedBranded = Boolean.valueOf(crc != systemImageCRC);
            if (session != null) {
                session.dict().put(key, isImagedBranded);               
            }
        }
        return isImagedBranded.booleanValue();
    }

    private static long imageCRC (AWResource resource)
    {
        InputStream inputStream = resource.inputStream();
        byte[] bytes = AWUtil.getBytes(inputStream);
        return AWChecksum.crc32(1L, bytes, bytes.length);
    }

    private static void setupSystemImagesCRC ()
    {
        if (ProductImageCRC == 0) {
            AWResourceManager rm = AWConcreteApplication.SharedInstance.resourceManager();
            AWResource resource = rm.resourceNamed("cmdbar_prod.gif");
            ProductImageCRC = imageCRC(resource);
            resource = rm.resourceNamed("cmdbar_banner.gif");
            BannerImageCRC = imageCRC(resource);
        }
    }

}
TOP

Related Classes of ariba.ui.widgets.HideBannerImageConditionHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.