added
target create
This commit is contained in:
		
							parent
							
								
									845076056d
								
							
						
					
					
						commit
						fc2eaaf0d2
					
				@ -13,7 +13,9 @@ import com.loafle.overflow.module.probe.dao.ProbeTaskDAO;
 | 
			
		||||
import com.loafle.overflow.module.sensor.dao.SensorDAO;
 | 
			
		||||
import com.loafle.overflow.module.sensor.dao.SensorItemDAO;
 | 
			
		||||
import com.loafle.overflow.module.target.dao.TargetDAO;
 | 
			
		||||
import com.loafle.overflow.module.target.service.TargetService;
 | 
			
		||||
import io.grpc.ServerBuilder;
 | 
			
		||||
import org.codehaus.jackson.map.DeserializationConfig;
 | 
			
		||||
import org.codehaus.jackson.map.ObjectMapper;
 | 
			
		||||
import org.springframework.context.ApplicationContext;
 | 
			
		||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
 | 
			
		||||
@ -37,9 +39,11 @@ public class DBProxy {
 | 
			
		||||
    private io.grpc.Server server;
 | 
			
		||||
 | 
			
		||||
    private static Map<String, JpaRepository> daoMap = null;
 | 
			
		||||
    private static Map<String, Object> serviceMap = null;
 | 
			
		||||
 | 
			
		||||
    public DBProxy() {
 | 
			
		||||
        daoMap =  new ConcurrentHashMap();
 | 
			
		||||
        serviceMap =  new ConcurrentHashMap();
 | 
			
		||||
 | 
			
		||||
        ApplicationContext ctx = new AnnotationConfigApplicationContext("com.loafle.overflow");
 | 
			
		||||
 | 
			
		||||
@ -60,6 +64,9 @@ public class DBProxy {
 | 
			
		||||
        daoMap.put("infraOSDaemon", ctx.getBean(InfraOSDaemonDAO.class));
 | 
			
		||||
        daoMap.put("infraOSPort", ctx.getBean(InfraOSPortDAO.class));
 | 
			
		||||
        daoMap.put("infraService", ctx.getBean(InfraServiceDAO.class));
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        serviceMap.put("serviceTarget", ctx.getBean(TargetService.class));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void start(int port) throws IOException {
 | 
			
		||||
@ -91,29 +98,35 @@ public class DBProxy {
 | 
			
		||||
                         io.grpc.stub.StreamObserver<com.loafle.overflow.db.api.DBOutput> responseObserver) {
 | 
			
		||||
            String targetDAO = request.getTargetDao();
 | 
			
		||||
 | 
			
		||||
            JpaRepository dao = daoMap.get(targetDAO);
 | 
			
		||||
            Object obj = null;
 | 
			
		||||
 | 
			
		||||
            if(dao != null) {
 | 
			
		||||
                try {
 | 
			
		||||
 | 
			
		||||
                    String jsonResult = doQuery(request, dao);
 | 
			
		||||
 | 
			
		||||
                    DBOutput reply = DBOutput.newBuilder()
 | 
			
		||||
                        .setResult(jsonResult)
 | 
			
		||||
                        .build();
 | 
			
		||||
                    responseObserver.onNext(reply);
 | 
			
		||||
                    responseObserver.onCompleted();
 | 
			
		||||
                }catch(Exception e) {
 | 
			
		||||
                    e.printStackTrace();
 | 
			
		||||
                    responseObserver.onError(e);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }else {
 | 
			
		||||
                responseObserver.onError(new Exception("Not assigned DAO :" + targetDAO));
 | 
			
		||||
            obj =daoMap.get(targetDAO);
 | 
			
		||||
            if(obj == null) {
 | 
			
		||||
                obj = serviceMap.get(targetDAO);
 | 
			
		||||
            }
 | 
			
		||||
            if(obj == null) {
 | 
			
		||||
                responseObserver.onError(new Exception("Not assigned DAO :" + targetDAO));
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            try {
 | 
			
		||||
 | 
			
		||||
                String jsonResult = doQuery(request, obj);
 | 
			
		||||
 | 
			
		||||
                DBOutput reply = DBOutput.newBuilder()
 | 
			
		||||
                    .setResult(jsonResult)
 | 
			
		||||
                    .build();
 | 
			
		||||
                responseObserver.onNext(reply);
 | 
			
		||||
                responseObserver.onCompleted();
 | 
			
		||||
            }catch(Exception e) {
 | 
			
		||||
                e.printStackTrace();
 | 
			
		||||
                responseObserver.onError(e);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private String doQuery(DBInput request, JpaRepository dao) throws Exception {
 | 
			
		||||
        private String doQuery(DBInput request, Object dao) throws Exception {
 | 
			
		||||
 | 
			
		||||
            String methodName = request.getMethod();
 | 
			
		||||
            Map<String, String> params = request.getParamsMap();
 | 
			
		||||
@ -133,10 +146,30 @@ public class DBProxy {
 | 
			
		||||
            List<Object> valueList = new ArrayList<Object>();
 | 
			
		||||
            for( String className : params.keySet() ){
 | 
			
		||||
                //className - model name(with package) , value - model JsonString
 | 
			
		||||
                Class<?> cls = Class.forName(className);
 | 
			
		||||
                Object obj = mapper.readValue((String)params.get(className), cls);
 | 
			
		||||
                valueList.add(obj);
 | 
			
		||||
                paramTypes.add(cls);
 | 
			
		||||
 | 
			
		||||
                Object obj = null;
 | 
			
		||||
                if(className.contains("|")) {
 | 
			
		||||
                    int idx = className.indexOf("|");
 | 
			
		||||
                    String firstClassName = className.substring(0, idx);
 | 
			
		||||
                    String lastClassName = className.substring(idx+1);
 | 
			
		||||
                    Class firstCls = Class.forName(firstClassName);
 | 
			
		||||
                    Class<?> lastCls = Class.forName(lastClassName);
 | 
			
		||||
                    mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
 | 
			
		||||
                    obj = mapper.readValue((String)params.get(className), mapper.getTypeFactory().constructCollectionType(firstCls, lastCls));
 | 
			
		||||
 | 
			
		||||
                    //FIXME:random sort.. T__T
 | 
			
		||||
                    paramTypes.add(0,firstCls);
 | 
			
		||||
                    valueList.add(0, obj);
 | 
			
		||||
 | 
			
		||||
                } else {
 | 
			
		||||
                    Class<?> cls = Class.forName(className);
 | 
			
		||||
                    obj = mapper.readValue((String)params.get(className), cls);
 | 
			
		||||
                    paramTypes.add(cls);
 | 
			
		||||
                    valueList.add(obj);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -84,4 +84,16 @@ public class TargetServiceTest {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testString() {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        String str = "list|model";
 | 
			
		||||
 | 
			
		||||
        if(str.contains("|")) {
 | 
			
		||||
            System.out.println(str);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -4,6 +4,7 @@ import com.loafle.overflow.AppConfig;
 | 
			
		||||
import com.loafle.overflow.JdbcConfiguration;
 | 
			
		||||
import com.loafle.overflow.module.domain.model.Domain;
 | 
			
		||||
import com.loafle.overflow.module.noauthprobe.dao.NoAuthProbeDAO;
 | 
			
		||||
import com.loafle.overflow.module.target.service.TargetService;
 | 
			
		||||
import org.junit.Assert;
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
import org.junit.runner.RunWith;
 | 
			
		||||
@ -25,6 +26,8 @@ public class MethodSeekerTest {
 | 
			
		||||
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private NoAuthProbeDAO noAuthProbeDAO;
 | 
			
		||||
    @Autowired
 | 
			
		||||
    private TargetService targetService;
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void getMethod() throws Exception {
 | 
			
		||||
@ -40,12 +43,12 @@ public class MethodSeekerTest {
 | 
			
		||||
    @Test
 | 
			
		||||
    public void RelfetMehotds() {
 | 
			
		||||
 | 
			
		||||
        JpaRepository jpa = this.noAuthProbeDAO;
 | 
			
		||||
        Object o = this.targetService;
 | 
			
		||||
 | 
			
		||||
        Method[] mArray = jpa.getClass().getMethods();
 | 
			
		||||
        Method[] mArray = o.getClass().getMethods();
 | 
			
		||||
 | 
			
		||||
        for (Method m : mArray) {
 | 
			
		||||
            if( m.getName().equals("findOne")) {
 | 
			
		||||
            if( m.getName().equals("saveAllTarget")) {
 | 
			
		||||
 | 
			
		||||
                System.out.println(m.getParameterTypes());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user