/** * This file is part of CloudML [ http://cloudml.org ] * * Copyright (C) 2012 - SINTEF ICT * Contact: Franck Chauvel <franck.chauvel@sintef.no> * * Module: root * * CloudML is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of * the License, or (at your option) any later version. * * CloudML 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General * Public License along with CloudML. If not, see * <http://www.gnu.org/licenses/>. */ /* * 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 org.cloudml.mrt.cmd; import java.util.Arrays; import java.util.HashMap; import org.cloudml.core.ComponentInstance; import org.cloudml.mrt.Coordinator; import org.cloudml.mrt.PeerStub; import org.cloudml.mrt.cmd.abstracts.Modification; import org.cloudml.mrt.cmd.abstracts.Property; import org.cloudml.mrt.cmd.abstracts.XPath; import org.cloudml.mrt.cmd.gen.Commit; import org.cloudml.mrt.cmd.gen.GetSnapshot; import org.cloudml.mrt.cmd.gen.Set; /** * @author huis */ public class CmdWrapper { protected Coordinator coord = null; protected PeerStub stub = null; public CmdWrapper(Coordinator coord, PeerStub stub) { this.coord = coord; this.stub = stub; } public Object eGet(String path) { //try{ GetSnapshot gs = new GetSnapshot(); gs.path = new XPath(path); return coord.process(gs, stub); /*} catch(Exception e){ e.printStackTrace(); return null; }*/ } public Object eGet(String path, KeyImagePair... pair) { GetSnapshot gs = new GetSnapshot(); gs.path = new XPath(path); gs.multimaps = new HashMap<String, XPath>(); for (int i = 0; i < pair.length; i++) { gs.multimaps.put(pair[i].image, new XPath(pair[i].property)); } return coord.process(gs, stub); } public Object eGet(String path, String... properties) { KeyImagePair[] params = new KeyImagePair[properties.length]; for (int i = 0; i < properties.length; i++) { params[i] = makeImagePair(properties[i], properties[i]); } return eGet(path, params); } public void eSet(String path, KeyValuePair... pair) { Set set = new Set(); set.parent = new XPath(path); set.keyValues = new HashMap<Property, Object>(); for (int i = 0; i < pair.length; i++) { set.keyValues.put(new Property(pair[i].property), pair[i].value); } Commit commit = new Commit(); commit.modifications = Arrays.asList((Modification) set); coord.process(commit, stub); } public KeyValuePair makePair(String property, Object value) { return new KeyValuePair(property, value); } public KeyImagePair makeImagePair(String property, String image) { return new KeyImagePair(property, image); } public static class KeyValuePair { String property; Object value; public KeyValuePair(String property, Object value) { this.property = property; this.value = value; } } public static class KeyImagePair { String property; String image; public KeyImagePair(String property, String image) { this.property = property; this.image = image; } } }