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