com.gemini.domain.repository.impl.GeminiNetworkRepositoryMongoDBImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.gemini.domain.repository.impl.GeminiNetworkRepositoryMongoDBImpl.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.gemini.domain.repository.impl;

import com.gemini.common.repository.impl.BaseRepositoryMongoDBImpl;
import com.gemini.domain.model.GeminiNetwork;
import com.gemini.domain.model.GeminiServer;
import com.gemini.domain.repository.GeminiNetworkRepository;
import com.google.common.net.InetAddresses;
import com.mongodb.MongoClient;
import java.util.List;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.mongodb.morphia.Datastore;
import org.mongodb.morphia.Morphia;
import org.pmw.tinylog.Logger;

//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
/**
 *
 * @author schari
 */
public class GeminiNetworkRepositoryMongoDBImpl extends BaseRepositoryMongoDBImpl<GeminiNetwork, String>
        implements GeminiNetworkRepository {

    public GeminiNetworkRepositoryMongoDBImpl(MongoClient mongoClient, Morphia morphia, String dbName) {
        //create the database and collection
        super(GeminiNetwork.class, mongoClient, morphia, dbName);
    }

    //find an applicaiton by name
    public GeminiNetwork getNetByStartAndEnd(String start, String end) {
        Datastore ds = getDatastore();
        if (ds == null) {
            Logger.error("get networks by start and end - no datastore:{} to {}", start, end);
            return null;
        }

        Logger.debug("get networks by start and end - build query", ToStringBuilder
                .reflectionToString(this.getClass().getSimpleName(), ToStringStyle.MULTI_LINE_STYLE));

        List<GeminiNetwork> retList = ds.find(GeminiNetwork.class).filter("start", InetAddresses.forString(start))
                .filter("end", InetAddresses.forString(end)).asList();
        for (GeminiNetwork n : retList) {
            //return the first one in the list
            Logger.debug("get networks by start and end - found networks:{} to {}", start, end);
            return n;
        }
        Logger.debug("get networks by start and end - did not find the networks:{} to {}", start, end);
        return null;
    }

    public List<GeminiServer> getServers(String start, String end) {
        List<GeminiServer> l = null;
        GeminiNetwork net = getNetByStartAndEnd(start, end);
        if (net != null) {
            Logger.debug("get network servers by start and end - returning servers for network {} to {}", start,
                    end);
            l = net.getServers();
        }
        return l;
    }
}