configfactory.java

来自「dump3 morpheus 0.2.9 src」· Java 代码 · 共 68 行

JAVA
68
字号
/**
 * DuMP3 version morpheus_0.2.9 - a duplicate/similar file finder in Java<BR>
 * Copyright 2005 Alexander Gr&auml;sser<BR>
 * All Rights Reserved, http://dump3.sourceforge.net/<BR>
 * <BR>
 * This file is part of DuMP3.<BR>
 * <BR>
 * DuMP3 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software
 * Foundation; either version 2 of the License, or (at your option) any later version.<BR>
 * <BR>
 * DuMP3 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU General Public License for more details.<BR>
 * <BR>
 * You should have received a copy of the GNU General Public License along with DuMP3; if not, write to the Free Software Foundation, Inc., 51 Franklin St,
 * Fifth Floor, Boston, MA 02110-1301 USA
 */
package net.za.grasser.duplicate.fingerprint.configure;

import java.util.HashMap;
import java.util.Map;
import net.za.grasser.duplicate.fingerprint.AbstractFingerprint;

/**
 * @author <a href="http://sourceforge.net/sendmessage.php?touser=733840">pyropunk at sourceforge dot net</a>
 * @version $Revision: 1.4 $
 */
public abstract class ConfigFactory {
  /**
   * @return FingerprintConfig
   */
  protected abstract FingerprintConfig create();

  /**
   * <code>factories</code> ConfigFactory -
   */
  private static final Map<String, ConfigFactory> factories = new HashMap<String, ConfigFactory>();

  /**
   * @param id
   * @param f
   */
  public static void addFactory(final String id, final ConfigFactory f) {
    factories.put(id, f);
  }

  /**
   * @param cls
   * @return FingerprintConfig
   */
  public static FingerprintConfig getConfig(final Class< ? extends AbstractFingerprint> cls) {
    final String cfg = cls.getSimpleName() + "Config";
    if (!factories.containsKey(cfg)) {
      try {
        // Load dynamically
        final String full = ConfigFactory.class.getPackage().getName() + '.' + cfg;
        Class.forName(full);
      } catch (final ClassNotFoundException e) {
        throw new RuntimeException("Bad config creation: " + cfg);
      }
      // See if it was put in:
      if (!factories.containsKey(cfg)) {
        throw new RuntimeException("Bad config creation: " + cfg);
      }
    }
    return factories.get(cfg).create();
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?