001/*
002  GRANITE DATA SERVICES
003  Copyright (C) 2011 GRANITE DATA SERVICES S.A.S.
004
005  This file is part of Granite Data Services.
006
007  Granite Data Services is free software; you can redistribute it and/or modify
008  it under the terms of the GNU Library General Public License as published by
009  the Free Software Foundation; either version 2 of the License, or (at your
010  option) any later version.
011
012  Granite Data Services is distributed in the hope that it will be useful, but
013  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
014  FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
015  for more details.
016
017  You should have received a copy of the GNU Library General Public License
018  along with this library; if not, see <http://www.gnu.org/licenses/>.
019*/
020
021package org.granite.tide.invocation;
022
023import java.util.List;
024import java.util.Map;
025
026import org.granite.tide.IInvocationResult;
027import org.granite.tide.TideMessage;
028
029
030/**
031 * @author William DRAI
032 */
033public class InvocationResult implements IInvocationResult {
034
035    private static final long serialVersionUID = 1L;
036    
037    
038    private Object result;
039    private int scope;
040    private boolean restrict;
041    private boolean merge = true;
042    private Object[][] updates;
043    private List<ContextUpdate> results;
044    private List<ContextEvent> events;
045    private List<TideMessage> messages;
046    private Map<String, List<TideMessage>> keyedMessages;
047    
048    
049    public InvocationResult() {
050    }
051    
052    public InvocationResult(Object result) {
053        this.result = result;
054    }
055    
056    public InvocationResult(Object result, List<ContextUpdate> results) {
057        this.result = result;
058        this.results = results;
059    }
060
061    public Object getResult() {
062        return result;
063    }
064    public void setResult(Object result) {
065        this.result = result;
066    }
067    
068    public int getScope() {
069        return scope;
070    }
071    public void setScope(int scope) {
072        this.scope = scope;
073    }
074    
075    public boolean getRestrict() {
076        return restrict;
077    }
078    public void setRestrict(boolean restrict) {
079        this.restrict = restrict;
080    }
081    
082    public boolean getMerge() {
083        return merge;
084    }
085    public void setMerge(boolean merge) {
086        this.merge = merge;
087    }
088
089    public Object[][] getUpdates() {
090        return updates;
091    }
092    public void setUpdates(Object[][] updates) {
093        this.updates = updates;
094    }
095
096    public List<ContextUpdate> getResults() {
097        return results;
098    }
099    public void setResults(List<ContextUpdate> results) {
100        this.results = results;
101    }
102    
103    public List<ContextEvent> getEvents() {
104        return events;
105    }
106    public void setEvents(List<ContextEvent> events) {
107        this.events = events;
108    }
109
110    public List<TideMessage> getMessages() {
111        return messages;
112    }
113    public void setMessages(List<TideMessage> messages) {
114        this.messages = messages;
115    }
116
117    public Map<String, List<TideMessage>> getKeyedMessages() {
118        return keyedMessages;
119    }
120    public void setKeyedMessages(Map<String, List<TideMessage>> keyedMessages) {
121        this.keyedMessages = keyedMessages;
122    }
123    
124    
125    @Override
126    public String toString() {
127        StringBuilder sb = new StringBuilder();
128        sb.append(getClass().getName()).append(" ");
129        if (scope == 1)
130                sb.append("(SESSION) ");
131        else if (scope == 2)
132                sb.append("(CONVERSATION) ");
133        if (restrict)
134                sb.append("(restricted) ");
135        sb.append("{\n");
136        sb.append("\tresult: ").append(result != null ? result : "(null)");
137        if (results != null) {
138                sb.append("\tresults: [");
139                for (Object result : results)
140                        sb.append(result != null ? result.toString() : "(null)").append(" ");
141                sb.append("]\n");
142        }
143        if (updates != null) {
144                sb.append("\tupdates: [");
145                for (Object[] update : updates)
146                        sb.append(update[0]).append(":").append(update[1]).append(" ");
147                sb.append("]\n");
148        }
149        if (events != null) {
150                sb.append("\tevents: [");
151                for (ContextEvent event : events)
152                        sb.append(event).append(" ");
153                sb.append("]\n");
154        }
155        sb.append("}");
156        return sb.toString();
157    }
158}