Projects tigase _server tigase-muc Issues #58
Support custom history provider (#58)
Open
Robert Larsen opened 1 decade ago

Many places in Tigase you can specify a full class name but for the history provider only a set of values are supported. The 'getHistoryProvider' method in 'tigase.muc.history.HistoryManagerFactory' could be changed from:

	public static HistoryProvider getHistoryManager(Map<String, Object> params) {
		try {
			String uri = (String) params.get(DB_URI_KEY);
			String cl = (String) params.get(DB_CLASS_KEY);
			if (log.isLoggable(Level.CONFIG))
				log.config("Used History Provider: " + cl);
			if (cl.trim().equals("none")) {
				return new NoneHistoryProvider();
			} else if (cl.trim().equals("memory")) {
				return new MemoryHistoryProvider();
			} else if (cl.contains("mysql")) {
				DataRepository dataRepository = RepositoryFactory.getDataRepository(null, uri, null);
				return new MySqlHistoryProvider(dataRepository);
			} else if (cl.contains("derby")) {
				DataRepository dataRepository = RepositoryFactory.getDataRepository(null, uri, null);
				return new DerbySqlHistoryProvider(dataRepository);
			} else if (cl.contains("pgsql")) {
				DataRepository dataRepository = RepositoryFactory.getDataRepository(null, uri, null);
				return new PostgreSqlHistoryProvider(dataRepository);
			} else if (cl.contains("sqlserver")) {
				DataRepository dataRepository = RepositoryFactory.getDataRepository(null, uri, null);
				return new SqlserverSqlHistoryProvider(dataRepository);
			}

			else
				throw new RuntimeException("Database not supported");
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

to

    public static HistoryProvider getHistoryManager(Map<String, Object> params) {
        try {
            String uri = (String) params.get(DB_URI_KEY);
            String cl = (String) params.get(DB_CLASS_KEY);
            if (log.isLoggable(Level.CONFIG))
                log.config("Used History Provider: " + cl);
            if (cl.trim().equals("none")) {
                return new NoneHistoryProvider();
            } else if (cl.trim().equals("memory")) {
                return new MemoryHistoryProvider();
            } else if (cl.contains("mysql")) {
                DataRepository dataRepository = RepositoryFactory.getDataRepository(null, uri, null);
                return new MySqlHistoryProvider(dataRepository);
            } else if (cl.contains("derby")) {
                DataRepository dataRepository = RepositoryFactory.getDataRepository(null, uri, null);
                return new DerbySqlHistoryProvider(dataRepository);
            } else if (cl.contains("pgsql")) {
                DataRepository dataRepository = RepositoryFactory.getDataRepository(null, uri, null);
                return new PostgreSqlHistoryProvider(dataRepository);
            } else if (cl.contains("sqlserver")) {
                DataRepository dataRepository = RepositoryFactory.getDataRepository(null, uri, null);
                return new SqlserverSqlHistoryProvider(dataRepository);
            } else {
                return (HistoryProvider) Class.forName(cl).newInstance();
            }

        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
issue 1 of 1
Type
New Feature
Priority
Blocker
Assignee
RedmineID
1889
Version
tigase-muc-2.2.0
Issue Votes (0)
Watchers (0)
Reference
tigase/_server/tigase-muc#58
Please wait...
Page is in error, reload to recover