All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.alachisoft.ncache.client.internal.caching.WebCacheHelper Maven / Gradle / Ivy

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.alachisoft.ncache.client.internal.caching;

import Alachisoft.NCache.Caching.AutoExpiration.ExpirationHint;
import Alachisoft.NCache.Caching.AutoExpiration.FixedExpiration;
import Alachisoft.NCache.Caching.AutoExpiration.IdleExpiration;
import Alachisoft.NCache.Caching.ItemRemoveReason;
import com.alachisoft.ncache.runtime.util.TimeSpan;

import java.util.Calendar;

/**
 * @author muhammad_sami
 */
public final class WebCacheHelper {



    ///// 
    ///// Creates and returns an expiration hint used internally. This method is for internal use only, do 
    ///// not use directly.
    ///// 
    //public static ExpirationHint CombineExpiryHints(DependencyHint hint1, DependencyHint hint2, 
    //    DependencyHint hint3, CacheDependency dependency)
    //{
    //    int count = 0;
    //    ExpirationHint[] hints = new ExpirationHint[4];
    //    if(hint1 != null) hints[count++] = hint1;
    //    if(hint2 != null) hints[count++] = hint2;
    //    if(hint3 != null) hints[count++] = hint3;
    //    if(dependency != null) hints[count++] = dependency.InternalHint;
    //    ExpirationHint eh = null;
    //    switch(count)
    //    {
    //        case 1: eh = hints[0]; break;
    //        case 2: eh = new AggregateExpirationHint(hints[0], hints[1]); break;
    //        case 3: eh = new AggregateExpirationHint(hints[0], hints[1], hints[2]); break;
    //        case 4: eh = new AggregateExpirationHint(hints); break;
    //    }
    //    hints[0] = hints[1] = hints[2] = hints[3] = null;
    //    return eh;
    //}

    /**
     * combines the absolute and sliding expiry params and returns a single
     * expiration hint value.
     *
     * @param absoluteExpiration the absolute expiration datatime
     * @param slidingExpiration  the sliding expiration time
     * @return expiration hint If you set the  parameter to less than TimeSpan.Zero, or the
     * equivalent of more than one year, an  is thrown. You cannot set both
     * sliding and absolute expirations on the same cached item. If you do so,
     * an  is thrown.
     */
    public static ExpirationHint MakeFixedIdleExpirationHint(java.util.Date absoluteExpiration, TimeSpan slidingExpiration) {
        if (CacheImpl.NoAbsoluteExpiration.equals(absoluteExpiration) && CacheImpl.NoSlidingExpiration.equals(slidingExpiration)) {
            return null;
        }
        if (CacheImpl.NoAbsoluteExpiration.equals(absoluteExpiration)) {
            if (slidingExpiration.compareTo(TimeSpan.Zero) < 0) {
                throw new IllegalArgumentException("slidingExpiration");
            }

            Calendar calendar = Calendar.getInstance();
            Calendar currentCalendar = Calendar.getInstance();
            calendar.add(Calendar.YEAR, 1);

            if (slidingExpiration.getTotalMiliSeconds() - (calendar.getTimeInMillis() - currentCalendar.getTimeInMillis()) >= 0) {
                throw new IllegalArgumentException("slidingExpiration");
            }

            return new IdleExpiration(slidingExpiration);
        }
        if (CacheImpl.NoSlidingExpiration.equals(slidingExpiration)) {
            return new FixedExpiration(absoluteExpiration);
        }
        throw new IllegalArgumentException("You cannot set both sliding and absolute expirations on the same cache item.");
    }

    public static void EvaluateTagsParameters(java.util.Hashtable queryInfo, String group) {
        if (queryInfo != null) {
            if (!tangible.DotNetToJavaStringHelper.isNullOrEmpty(group) && queryInfo.get("tag-info") != null) //#else
            {
                if (!(group == null || group.length() == 0) && queryInfo.get("tag-info") != null) //#endif
                {
                    throw new IllegalArgumentException("You cannot set both groups and tags on the same cache item.");
                }
            }
        }
    }

    //C# TO JAVA CONVERTER WARNING: Unsigned integer types have no direct equivalent in Java:
//ORIGINAL LINE: public static byte EvaluateExpirationParameters(DateTime absoluteExpiration, TimeSpan slidingExpiration)
    public static byte EvaluateExpirationParameters(java.util.Date absoluteExpiration, TimeSpan slidingExpiration) {
        if (CacheImpl.NoAbsoluteExpiration.equals(absoluteExpiration) && CacheImpl.NoSlidingExpiration.equals(slidingExpiration)) {
            return 2;
        }

        if (CacheImpl.NoAbsoluteExpiration.equals(absoluteExpiration)) {
            if (slidingExpiration.compareTo(TimeSpan.Zero) < 0) {
                throw new IllegalArgumentException("slidingExpiration");
            }

            Calendar calendar = Calendar.getInstance();
            Calendar currentCalendar = Calendar.getInstance();
            calendar.add(Calendar.YEAR, 1);

            if (slidingExpiration.getTotalMiliSeconds() - (calendar.getTimeInMillis() - currentCalendar.getTimeInMillis()) >= 0) {
                throw new IllegalArgumentException("slidingExpiration");
            }

            return 0;
        }

        if (CacheImpl.NoSlidingExpiration.equals(slidingExpiration)) {
            return 1;
        }

        throw new IllegalArgumentException("You cannot set both sliding and absolute expirations on the same cache item.");
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy