/* Wotonomy: OpenStep design patterns for pure Java applications. Copyright (C) 2001 Michael Powers This library 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 2.1 of the License, or (at your option) any later version. This library 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 this library; if not, see http://www.gnu.org */ package net.wotonomy.access; import net.wotonomy.foundation.NSArray; import net.wotonomy.foundation.NSDictionary; import net.wotonomy.foundation.NSMutableArray; import net.wotonomy.foundation.NSMutableDictionary; /** * Represents a stored procedure in a database. * * @author ezamudio@nasoft.com * @author $Author: cgruber $ * @version $Revision: 894 $ */ public class EOStoredProcedure implements EOPropertyListEncoding { protected String _name; protected String _externalName; protected EOModel _model; protected NSArray _arguments = NSArray.EmptyArray; protected NSDictionary _userInfo = NSDictionary.EmptyDictionary; protected NSDictionary _internalInfo = NSDictionary.EmptyDictionary; /** Creates a stored procedure from a property list. */ public EOStoredProcedure(NSDictionary dict, Object obj) { super(); if (obj instanceof EOModel) _model = (EOModel)obj; NSArray a = (NSArray)dict.objectForKey("arguments"); if (a != null) { NSMutableArray args = new NSMutableArray(a.count()); for (int i = 0; i < a.count(); i++) { NSDictionary ad = (NSDictionary)a.objectAtIndex(i); EOAttribute arg = new EOAttribute(ad, this); args.addObject(arg); } _arguments = args; } setName((String)dict.objectForKey("name")); setExternalName((String)dict.objectForKey("externalName")); if (dict.objectForKey("userInfo") != null) setUserInfo((NSDictionary)dict.objectForKey("userInfo")); if (dict.objectForKey("internalInfo") != null) _internalInfo = (NSDictionary)dict.objectForKey("internalInfo"); } public EOStoredProcedure(String withName) { super(); setName(withName); } public void setName(String value) { _name = value; } public String name() { return _name; } public void setExternalName(String value) { _externalName = value; } public String externalName() { return _externalName; } public void setArguments(NSArray value) { _arguments = value; } public NSArray arguments() { return _arguments; } public EOModel model() { return _model; } public void setUserInfo(NSDictionary info) { _userInfo = info; } public NSDictionary userInfo() { return _userInfo; } public void awakeWithPropertyList(NSDictionary plist) { } public void encodeIntoPropertyList(NSMutableDictionary plist) { plist.setObjectForKey(name(), "name"); plist.setObjectForKey(externalName(), "externalName"); NSMutableArray arr = new NSMutableArray(_arguments.count()); NSMutableDictionary d = null; for (int i = 0; i < _arguments.count(); i++) { EOAttribute a = (EOAttribute)_arguments.objectAtIndex(i); d = new NSMutableDictionary(); a.encodeIntoPropertyList(d); arr.addObject(d); } plist.setObjectForKey(arr, "arguments"); } } /* * $Log$ * Revision 1.2 2006/02/16 16:47:14 cgruber * Move some classes in to "internal" packages and re-work imports, etc. * * Also use UnsupportedOperationExceptions where appropriate, instead of WotonomyExceptions. * * Revision 1.1 2006/02/16 13:19:57 cgruber * Check in all sources in eclipse-friendly maven-enabled packages. * * Revision 1.4 2003/08/11 19:38:27 chochos * Can now read from a file and re-write to another file. * * Revision 1.3 2003/08/09 01:36:32 chochos * implement EOPropertyListEncoding * * Revision 1.2 2003/08/08 02:14:43 chochos * can create a stored procedure from a property list. main accessors are in place. * * Revision 1.1 2003/08/07 02:41:04 chochos * these don't do much for now. * */