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

com.gemstone.gemfire.admin.internal.SystemMemberRegionImpl Maven / Gradle / Ivy

/*
 * Copyright (c) 2010-2015 Pivotal Software, Inc. All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you
 * may not use this file except in compliance with the License. You
 * may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 * implied. See the License for the specific language governing
 * permissions and limitations under the License. See accompanying
 * LICENSE file.
 */
package com.gemstone.gemfire.admin.internal;

import com.gemstone.gemfire.admin.*;
import com.gemstone.gemfire.cache.*;
//import com.gemstone.gemfire.internal.Assert;
//import com.gemstone.gemfire.internal.admin.*;
import com.gemstone.gemfire.internal.admin.remote.*;

import java.io.File;
import java.util.*;

/**
 * View of a region in a GemFire system member's cache.
 *
 * @author    Darrel Schneider
 * @since     3.5
 */
public class SystemMemberRegionImpl implements SystemMemberRegion {

  private AdminRegion r;
  private RegionAttributes ra;
  private CacheStatistics rs;
  private Set subregionNames;
  private Set subregionFullPaths;
  private int entryCount;
  private int subregionCount;

  /** The cache to which this region belongs */
  private final SystemMemberCacheImpl cache;

  // constructors
  public SystemMemberRegionImpl(SystemMemberCacheImpl cache, Region r)
  {
    this.cache = cache;
    this.r = (AdminRegion)r;
  }

  private void refreshFields() {
    this.ra = this.r.getAttributes();
    if (getStatisticsEnabled() && !this.ra.getDataPolicy().withPartitioning()) {
      this.rs = this.r.getStatistics();
    } else {
      this.rs = null;
    }
    { // set subregionNames
      Set s = this.r.subregions(false);
      Set names = new TreeSet();
      Set paths = new TreeSet();
      Iterator it = s.iterator();
      while (it.hasNext()) {
        Region r = (Region)it.next();
        String name = r.getName();
        names.add(name);
        paths.add(this.getFullPath() + Region.SEPARATOR_CHAR + name);
      }
      this.subregionNames = names;
      this.subregionFullPaths = paths;
    }
    try {
      int[] sizes = this.r.sizes();
      this.entryCount = sizes[0];
      this.subregionCount = sizes[1];
    } catch (CacheException ignore) {
      this.entryCount = 0;
      this.subregionCount = 0;
    }
  }
  
  // attributes
  public String getName() {
    return this.r.getName();
  }
  
  public String getFullPath() {
    return this.r.getFullPath();
  }

  public java.util.Set getSubregionNames() {
    return this.subregionNames;
  }

  public java.util.Set getSubregionFullPaths() {
    return this.subregionFullPaths;
  }

  public String getUserAttribute() {
    return (String)r.getUserAttribute();
  }

  public String getCacheLoader() {
    Object o = this.ra.getCacheLoader();
    if (o == null) {
      return "";
    } else {
      return o.toString();
    }
  }
  public String getCacheWriter() {
    Object o = this.ra.getCacheWriter();
    if (o == null) {
      return "";
    } else {
      return o.toString();
    }
  }

  public String getKeyConstraint() {
    Class constraint = this.ra.getKeyConstraint();
    if (constraint == null) {
      return "";
    } else {
      return constraint.getName();
    }
  }

  public String getValueConstraint() {
    Class constraint = this.ra.getValueConstraint();
    if (constraint == null) {
      return "";
    } else {
      return constraint.getName();
    }
  }

  public boolean getEarlyAck() {
    return this.ra.getEarlyAck();
  }

  public int getRegionTimeToLiveTimeLimit() {
    return this.ra.getRegionTimeToLive().getTimeout();
  }

  public ExpirationAction getRegionTimeToLiveAction() {
    return this.ra.getRegionTimeToLive().getAction();
  }

  public int getEntryTimeToLiveTimeLimit() {
    return this.ra.getEntryTimeToLive().getTimeout();
  }

  public ExpirationAction getEntryTimeToLiveAction() {
    return this.ra.getEntryTimeToLive().getAction();
  }

  public String getCustomEntryTimeToLive() {
    Object o = this.ra.getCustomEntryTimeToLive();
    if (o == null) {
      return "";
    } else {
      return o.toString();
    }
  }
  
  public int getRegionIdleTimeoutTimeLimit() {
    return this.ra.getRegionIdleTimeout().getTimeout();
  }

  public ExpirationAction getRegionIdleTimeoutAction() {
    return this.ra.getRegionIdleTimeout().getAction();
  }

  public int getEntryIdleTimeoutTimeLimit() {
    return this.ra.getEntryIdleTimeout().getTimeout();
  }

  public ExpirationAction getEntryIdleTimeoutAction() {
    return this.ra.getEntryIdleTimeout().getAction();
  }

  public String getCustomEntryIdleTimeout() {
    Object o = this.ra.getCustomEntryIdleTimeout();
    if (o == null) {
      return "";
    } else {
      return o.toString();
    }
  }
  
  public MirrorType getMirrorType() {
    return this.ra.getMirrorType();
  }
  
  public DataPolicy getDataPolicy() {
    return this.ra.getDataPolicy();
  }
  
  public Scope getScope() {
    return this.ra.getScope();
  }

  public EvictionAttributes getEvictionAttributes() {
    return this.ra.getEvictionAttributes();
  }

  /**
   * This method will return an empty string if there are no CacheListeners
   * defined on the region. If there are more than 1 CacheListeners defined,
   * this method will return the description of the 1st CacheListener in the
   * list returned by the getCacheListeners method. If there is only one
   * CacheListener defined this method will return it's description
   * 
   * @return String the region's CacheListener description
   * @deprecated as of 6.0, use {@link #getCacheListeners} instead
   */
  @Deprecated
  public String getCacheListener() {
    String[] o = this.getCacheListeners();
    if (o.length == 0) {
      return "";
    }
    else {
      return o[0].toString();
    }
  }

  /**
   * This method will return an empty array if there are no CacheListeners
   * defined on the region. If there are one or more than 1 CacheListeners
   * defined, this method will return an array which has the description of all
   * the CacheListeners
   * 
   * @return String[] the region's CacheListeners descriptions as a
   *         String array
   * @since 6.0
   */
  public String[] getCacheListeners() {
    Object[] o = this.ra.getCacheListeners();
    String[] ret = null;
    if (o == null || o.length == 0) {
      ret = new String[0];
    }
    else {
      ret = new String[o.length];
      for (int i = 0; i < o.length; i++) {
        ret[i] = o[i].toString();
      }
    }
    return ret;
  }

  public int getInitialCapacity() {
    return this.ra.getInitialCapacity();
  }

  public float getLoadFactor() {
    return this.ra.getLoadFactor();
  }

  public int getConcurrencyLevel() {
    return this.ra.getConcurrencyLevel();
  }

  public boolean getConcurrencyChecksEnabled() {
    return this.ra.getConcurrencyChecksEnabled();
  }

  public boolean getStatisticsEnabled() {
    return this.ra.getStatisticsEnabled();
  }

  public boolean getPersistBackup() {
    return this.ra.getPersistBackup();
  }

  public DiskWriteAttributes getDiskWriteAttributes() {
    return this.ra.getDiskWriteAttributes();
  }

  public File[] getDiskDirs() {
    return this.ra.getDiskDirs();
  }

  public int getEntryCount() {
    return this.entryCount;
  }
  
  public int getSubregionCount() {
    return this.subregionCount;
  }

  public long getLastModifiedTime() {
    if (this.rs == null) {
      return 0;
    } else {
      return this.rs.getLastModifiedTime();
    }
  }

  public long getLastAccessedTime() {
    if (this.rs == null) {
      return 0;
    } else {
      return this.rs.getLastAccessedTime();
    }
  }

  public long getHitCount() {
    if (this.rs == null) {
      return 0;
    } else {
      return this.rs.getHitCount();
    }
  }

  public long getMissCount() {
    if (this.rs == null) {
      return 0;
    } else {
      return this.rs.getMissCount();
    }
  }

  public float getHitRatio() {
    if (this.rs == null) {
      return 0;
    } else {
      return this.rs.getHitRatio();
    }
  }
  
  // operations
  public void refresh() {
    refreshFields();
  }

	/**
	 * Returns a string representation of the object.
	 * 
	 * @return a string representation of the object
	 */
  @Override
	public String toString() {
		return getName();
	}

  public SystemMemberRegion createSubregion(String name,
                                            RegionAttributes attrs)
    throws AdminException {

    Region r =
      this.cache.getVM().createSubregion(this.cache.getCacheInfo(),
                                         this.getFullPath(), name, attrs);
    if (r == null) {
      return null;

    } else {
      return this.cache.createSystemMemberRegion(r);
    }

  }

  public MembershipAttributes getMembershipAttributes() {
    return this.ra.getMembershipAttributes();
  }
  
  public SubscriptionAttributes getSubscriptionAttributes() {
    return this.ra.getSubscriptionAttributes();
  }
  
  public PartitionAttributes getPartitionAttributes() {
    return this.ra.getPartitionAttributes();
  }

}





© 2015 - 2024 Weber Informatics LLC | Privacy Policy