From 9218e24591524c58b65a34d66bd99272a5aa2f36 Mon Sep 17 00:00:00 2001 From: "Eric J. Bowersox" Date: Tue, 27 May 2003 09:04:40 +0000 Subject: [PATCH] added database tables outlining "community" objects and initial interface definition for community and community service --- conf/venice-db-init-mysql.sql | 269 ++++++++++-------- .../venice/CommunitySearchField.java | 73 +++++ .../venice/CommunityVisibility.java | 74 +++++ .../venice/community/CommunityService.java | 53 ++++ .../venice/iface/VeniceCommunity.java | 87 ++++++ 5 files changed, 443 insertions(+), 113 deletions(-) create mode 100644 src/venice-base/com/silverwrist/venice/CommunitySearchField.java create mode 100644 src/venice-base/com/silverwrist/venice/CommunityVisibility.java create mode 100644 src/venice-base/com/silverwrist/venice/community/CommunityService.java create mode 100644 src/venice-base/com/silverwrist/venice/iface/VeniceCommunity.java diff --git a/conf/venice-db-init-mysql.sql b/conf/venice-db-init-mysql.sql index 1029009..68a1174 100644 --- a/conf/venice-db-init-mysql.sql +++ b/conf/venice-db-init-mysql.sql @@ -30,37 +30,37 @@ USE venice; # The "namespace cache" table, used to map string namespaces (used in the code) to integer IDs # (used in the database). CREATE TABLE namespaces ( - nsid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - namespace VARCHAR(255) BINARY NOT NULL, + nsid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # namespace ID + namespace VARCHAR(255) BINARY NOT NULL, # the actual namespace UNIQUE INDEX on_namespace (namespace) ); # The global properties table. CREATE TABLE globalprop ( - nsid INT NOT NULL, - prop_name VARCHAR(255) BINARY NOT NULL, - prop_value VARCHAR(255), + nsid INT NOT NULL, # namespace ID of property + prop_name VARCHAR(255) BINARY NOT NULL, # name of the property + prop_value VARCHAR(255), # property value PRIMARY KEY (nsid, prop_name) ); # The global "blocks" table, used to store fragments of text/HTML for later use. CREATE TABLE globalblock ( - nsid INT NOT NULL, - block_name VARCHAR(255) BINARY NOT NULL, - block TEXT, + nsid INT NOT NULL, # namespace ID of block + block_name VARCHAR(255) BINARY NOT NULL, # name of block + block TEXT, # actual block (64K text) PRIMARY KEY (nsid, block_name) ); # The main user information table. CREATE TABLE users ( - uid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - username VARCHAR(64) NOT NULL, - email VARCHAR(255) NOT NULL, - is_anon TINYINT DEFAULT 0, - locked TINYINT DEFAULT 0, - nospam TINYINT DEFAULT 0, - created DATETIME NOT NULL, - last_accessed DATETIME, + uid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # user ID + username VARCHAR(64) NOT NULL, # user name + email VARCHAR(255) NOT NULL, # E-mail address + is_anon TINYINT DEFAULT 0, # is this the "anonymous" user? + locked TINYINT DEFAULT 0, # is this user account locked? + nospam TINYINT DEFAULT 0, # if 1, do not include this user in any mass mailings + created DATETIME NOT NULL, # date user was created + last_accessed DATETIME, # date user last logged in UNIQUE INDEX on_username (username) ); @@ -68,117 +68,115 @@ CREATE TABLE users ( # and name, and provide "source data" to allow multiple sources for the same type of # authentication (such as browser cookies for multiple browsers). CREATE TABLE userauth ( - uid INT NOT NULL, - nsid INT NOT NULL, - method VARCHAR(255) BINARY NOT NULL, - source_data VARCHAR(255), - auth_data VARCHAR(255), + uid INT NOT NULL, # user ID + nsid INT NOT NULL, # namespace ID of authentication method + method VARCHAR(255) BINARY NOT NULL, # name of authentication method + source_data VARCHAR(255), # source data for authentication method + auth_data VARCHAR(255), # authentication data PRIMARY KEY (uid, nsid, method) ); # The user properties table. CREATE TABLE userprop ( - uid INT NOT NULL, - nsid INT NOT NULL, - prop_name VARCHAR(255) BINARY NOT NULL, - prop_value VARCHAR(255), + uid INT NOT NULL, # user ID + nsid INT NOT NULL, # namespace ID of property + prop_name VARCHAR(255) BINARY NOT NULL, # name of property + prop_value VARCHAR(255), # property value PRIMARY KEY (uid, nsid, prop_name) ); # The groups table. CREATE TABLE groups ( - gid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - groupname VARCHAR(64) NOT NULL, - gaclid INT NOT NULL DEFAULT -1, + gid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # group ID + groupname VARCHAR(64) NOT NULL, # name of group + gaclid INT NOT NULL DEFAULT -1, # ACL ID for the group UNIQUE INDEX on_groupname (groupname) ); # The group membership table. CREATE TABLE groupmembers ( - gid INT NOT NULL, - uid INT NOT NULL, + gid INT NOT NULL, # ID of group + uid INT NOT NULL, # ID of user that is a member PRIMARY KEY (gid, uid), UNIQUE INDEX reverse_index (uid, gid) ); # The group properties table. CREATE TABLE groupprop ( - gid INT NOT NULL, - nsid INT NOT NULL, - prop_name VARCHAR(255) BINARY NOT NULL, - prop_value VARCHAR(255), + gid INT NOT NULL, # ID of group + nsid INT NOT NULL, # namespace ID for property + prop_name VARCHAR(255) BINARY NOT NULL, # name of property + prop_value VARCHAR(255), # property value PRIMARY KEY (gid, nsid, prop_name) ); # The main ACL table. Each ACL has a numeric ID, a name, an unordered collection of owners (which may # be groups or users), and an ordered collection of entries (ACEs). CREATE TABLE acl ( - aclid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - aclname VARCHAR(255) NOT NULL, + aclid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # ID of the ACL + aclname VARCHAR(255) NOT NULL, # name of the ACL INDEX on_name (aclname) ); # The table of owners for ACLs. Each ACL has one or more owners. -# Flags Bit 0: 0=user, 1=group CREATE TABLE aclowner ( - aclid INT NOT NULL, - ownerid INT NOT NULL, - flags TINYINT NOT NULL, + aclid INT NOT NULL, # ID of the ACL + ownerid INT NOT NULL, # ID of the owner + flags TINYINT NOT NULL, # Flags Bit 0: 0=user, 1=group INDEX on_acl (aclid) ); # The table mapping ACLs to ACEs. Each ACL has zero or more ACEs. CREATE TABLE acldata ( - aclid INT NOT NULL, - seq INT NOT NULL, - aceid INT NOT NULL, + aclid INT NOT NULL, # ID of the ACL + seq INT NOT NULL, # sequence of this ACE + aceid INT NOT NULL, # ID of the corresponding ACE PRIMARY KEY (aclid, seq) ); # The main ACE table. Each ACE has a numeric ID, a principal reference (which may be a user or # group ID), a "negative" flag, and an unordered collection of permissions. -# Flags Bit 0: 0=user, 1=group -# Flags Bit 4: 0=positive ACE, 1=negative ACE CREATE TABLE ace ( - aceid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - pri INT, - flags TINYINT NOT NULL DEFAULT 0 + aceid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # ID of this ACE + pri INT, # Principal reference + flags TINYINT NOT NULL DEFAULT 0 # Flags Bit 0: 0=user, 1=group + # Flags Bit 4: 0=positive ACE, 1=negative ACE ); # The table mapping permissions into ACEs. Permissions are identified by namespace and name. CREATE TABLE acedata ( - aceid INT NOT NULL, - perm_nsid INT NOT NULL, - perm_name VARCHAR(255) BINARY NOT NULL, + aceid INT NOT NULL, # ID of this ACE + perm_nsid INT NOT NULL, # namespace ID of permission + perm_name VARCHAR(255) BINARY NOT NULL, # name of permission INDEX on_ace (aceid) ); -# Global security data table. +# Global security data table. This table has only one row. CREATE TABLE globalsec ( - admin_uid INT NOT NULL, - admin_gid INT NOT NULL, - global_aclid INT NOT NULL, - alluser_gid INT NOT NULL, - verified_gid INT NOT NULL + admin_uid INT NOT NULL, # administrator UID + admin_gid INT NOT NULL, # GID of administrators group + global_aclid INT NOT NULL, # ACLID of global ACL + alluser_gid INT NOT NULL, # GID of "all users" GID + verified_gid INT NOT NULL # GID of "verified users" GID ); # The audit information table. Each audit "event" can have up to 8 properties defined with it, # which are serialized as other "properties." CREATE TABLE audit ( - record BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, - on_date DATETIME NOT NULL, - event INT NOT NULL, - uid INT NOT NULL, - subid INT NOT NULL DEFAULT 0, - ip VARCHAR(48), - prop0 VARCHAR(255), - prop1 VARCHAR(255), - prop2 VARCHAR(255), - prop3 VARCHAR(255), - prop4 VARCHAR(255), - prop5 VARCHAR(255), - prop6 VARCHAR(255), - prop7 VARCHAR(255), + record BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT, # audit record ID + on_date DATETIME NOT NULL, # date stamp of audit record + event INT NOT NULL, # event ID + uid INT NOT NULL, # user ID of responsible user + subid INT NOT NULL DEFAULT 0, # "sub ID" (often community ID) + ip VARCHAR(48), # IP address of source + prop0 VARCHAR(255), # event property + prop1 VARCHAR(255), # event property + prop2 VARCHAR(255), # event property + prop3 VARCHAR(255), # event property + prop4 VARCHAR(255), # event property + prop5 VARCHAR(255), # event property + prop6 VARCHAR(255), # event property + prop7 VARCHAR(255), # event property INDEX by_date (on_date), INDEX sub_view (subid, on_date) ); @@ -187,82 +185,127 @@ CREATE TABLE audit ( # to cut down on space usage in the audit table. Event IDs can be predefined # at database create time, or defined dynamically, or both. CREATE TABLE auditevent ( - eventid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - event_nsid INT NOT NULL, - event_name VARCHAR(255) BINARY NOT NULL, - descr TINYTEXT, + eventid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # event ID + event_nsid INT NOT NULL, # namespace ID of event + event_name VARCHAR(255) BINARY NOT NULL, # event name + descr TINYTEXT, # event description UNIQUE INDEX by_event (event_nsid, event_name) ); # The image store table. This is used to store relatively small images like # user photos and logos. CREATE TABLE imagestore ( - imageid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - typecode INT NOT NULL, - ownerid INT NOT NULL, - ownerflag TINYINT NOT NULL DEFAULT 0, - mimetype VARCHAR(128), - length INT, - data MEDIUMBLOB + imageid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # image ID + typecode INT NOT NULL, # image type code + ownerid INT NOT NULL, # who owns it? + ownerflag TINYINT NOT NULL DEFAULT 0, # owner: user or group? + mimetype VARCHAR(128), # MIME type of image + length INT, # length of image in bytes + data MEDIUMBLOB # image data (max 16 Mb) ); # The image type table, used to differentiate between images stored in the table. CREATE TABLE imagetype ( - typecode INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - nsid INT NOT NULL, - name VARCHAR(255) BINARY NOT NULL + typecode INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # image type code + nsid INT NOT NULL, # image type namespace ID + name VARCHAR(255) BINARY NOT NULL # image type name ); #### following this line are Venice-specific tables #### # The table which defines menus. CREATE TABLE menus ( - menuid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, - menu_nsid INT NOT NULL, - menu_name VARCHAR(255) BINARY NOT NULL, - title VARCHAR(255) NOT NULL, - subtitle VARCHAR(255) NULL, + menuid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # menu ID + menu_nsid INT NOT NULL, # namespace ID of menu name + menu_name VARCHAR(255) BINARY NOT NULL, # name of menu + title VARCHAR(255) NOT NULL, # menu title + subtitle VARCHAR(255) NULL, # menu subtitle UNIQUE INDEX by_name (menu_nsid, menu_name) ); # Definitions of variables for menus. CREATE TABLE menuvars ( - menuid INT NOT NULL, - var_name VARCHAR(255) NOT NULL, - default_val VARCHAR(255) NULL, + menuid INT NOT NULL, # menu ID + var_name VARCHAR(255) NOT NULL, # name of variable + default_val VARCHAR(255) NULL, # default value of variable PRIMARY KEY (menuid, var_name) ); # Definitions of menu items. CREATE TABLE menuitems ( - menuid INT NOT NULL, - sequence INT NOT NULL, - itemtype VARCHAR(32) NOT NULL, - enable TINYINT NOT NULL DEFAULT 1, - indent INT NOT NULL DEFAULT 0, - text VARCHAR(255) NULL, - linktype VARCHAR(32) NULL, - link VARCHAR(255) NULL, - target VARCHAR(255) NULL, - title VARCHAR(255) NULL, - on_click VARCHAR(255) NULL, - perm_nsid INT NULL, - perm_name VARCHAR(255) BINARY NULL, - ifdef_var VARCHAR(255) NULL, - ifndef_var VARCHAR(255) NULL, + menuid INT NOT NULL, # menu ID + sequence INT NOT NULL, # sequence of menu item + itemtype VARCHAR(32) NOT NULL, # menu item type + enable TINYINT NOT NULL DEFAULT 1, # enable this menu item? + indent INT NOT NULL DEFAULT 0, # indent level of menu item + text VARCHAR(255) NULL, # text of menu item + linktype VARCHAR(32) NULL, # link type to use with menu item + link VARCHAR(255) NULL, # link for menu item + target VARCHAR(255) NULL, # target frame for menu item + title VARCHAR(255) NULL, # menu item title + on_click VARCHAR(255) NULL, # menu item onClick= property + perm_nsid INT NULL, # you must have this permission (namespace ID) + perm_name VARCHAR(255) BINARY NULL, # you must have this permission (name) + ifdef_var VARCHAR(255) NULL, # show item if this variable is defined + ifndef_var VARCHAR(255) NULL, # show item if this variable is not defined PRIMARY KEY (menuid, sequence) ); # The table mapping category IDs to category names. CREATE TABLE refcategory ( - catid INT NOT NULL PRIMARY KEY, - parent INT NOT NULL, - symlink INT NOT NULL, - name VARCHAR(64) NOT NULL, - dontuse TINYINT DEFAULT 0, + catid INT NOT NULL PRIMARY KEY, # category ID + parent INT NOT NULL, # parent category + symlink INT NOT NULL, # if this is a symlink, what category does it link to? + name VARCHAR(64) NOT NULL, # category name + dontuse TINYINT DEFAULT 0, # 1 if this is a deprecated category UNIQUE INDEX display (parent, name) ); +# The master communities table. +CREATE TABLE communities ( + cid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, # community ID + member_gid INT NOT NULL, # group ID representing community members + host_gid INT NOT NULL, # group ID representing community hosts + host_uid INT NOT NULL, # UID of host + aclid INT NOT NULL, # community ACL ID + catid INT NOT NULL DEFAULT 0, # community category ID (xref to "refcategory" table) + hide_dir TINYINT NOT NULL DEFAULT 0, # do we want to hide community from directory? + hide_search TINYINT NOT NULL DEFAULT 0, # do we want to hide community from searches? + name VARCHAR(128) NOT NULL, # community name + alias VARCHAR(32) NOT NULL, # community alias + createdate DATETIME NOT NULL, # creation date/time + lastaccess DATETIME, # last access date/time + lastupdate DATETIME, # last update date/time + INDEX by_name (name), + UNIQUE INDEX by_alias (alias), + INDEX by_catdate (catid, createdate), + INDEX by_create (createdate), + INDEX by_catname (catid, name) + ); + +# Community access table, which dictates if a community is public or private and the way people +# have to authenticate to join it. +CREATE TABLE commaccess ( + cid INT NOT NULL, # the community ID + ugid INT NOT NULL, # user or group ID + is_group TINYINT NOT NULL, # 1 if this is a group, 0 if a user + single_use TINYINT NOT NULL DEFAULT 0, # if 1, this will be removed after a join + auth_nsid INT NULL, # authenticator namespace ID (NULL for none) + auth_name VARCHAR(255) BINARY NULL, # authenticator name (NULL for none) + source_data VARCHAR(255), # authenticator source data + auth_data VARCHAR(255), # authentication data + PRIMARY KEY (cid, is_group, ugid) + ); + +# The community properties table. +CREATE TABLE commprops ( + cid INT NOT NULL, # community ID + nsid INT NOT NULL, # namespace ID of property + prop_name VARCHAR(255) BINARY NOT NULL, # name of property + prop_value VARCHAR(255), # property value + PRIMARY KEY (cid, nsid, prop_name) + ); + ############################################################################## # Set table access rights ############################################################################## diff --git a/src/venice-base/com/silverwrist/venice/CommunitySearchField.java b/src/venice-base/com/silverwrist/venice/CommunitySearchField.java new file mode 100644 index 0000000..af22ce5 --- /dev/null +++ b/src/venice-base/com/silverwrist/venice/CommunitySearchField.java @@ -0,0 +1,73 @@ +/* + * The contents of this file are subject to the Mozilla Public License Version 1.1 + * (the "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at . + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT + * WARRANTY OF ANY KIND, either express or implied. See the License for the specific + * language governing rights and limitations under the License. + * + * The Original Code is the Venice Web Communities System. + * + * The Initial Developer of the Original Code is Eric J. Bowersox , + * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are + * Copyright (C) 2003 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. + * + * Contributor(s): + */ +package com.silverwrist.venice; + +import java.util.*; +import org.apache.commons.lang.enum.*; + +public final class CommunitySearchField extends Enum +{ + /*-------------------------------------------------------------------------------- + * The actual enumeration values + *-------------------------------------------------------------------------------- + */ + + public static final CommunitySearchField NAME = new CommunitySearchField("NAME"); + public static final CommunitySearchField SYNOPSIS = new CommunitySearchField("SYNOPSIS"); + + /*-------------------------------------------------------------------------------- + * Constructor + *-------------------------------------------------------------------------------- + */ + + private CommunitySearchField(String name) + { + super(name); + + } // end constructor + + /*-------------------------------------------------------------------------------- + * Standard static method implementations + *-------------------------------------------------------------------------------- + */ + + public static CommunitySearchField getEnum(String name) + { + return (CommunitySearchField)getEnum(CommunitySearchField.class,name); + + } // end getEnum + + public static Map getEnumMap() + { + return getEnumMap(CommunitySearchField.class); + + } // end getEnumMap + + public static List getEnumList() + { + return getEnumList(CommunitySearchField.class); + + } // end getEnumList + + public static Iterator iterator() + { + return iterator(CommunitySearchField.class); + + } // end iterator + +} // end class CommunitySearchField diff --git a/src/venice-base/com/silverwrist/venice/CommunityVisibility.java b/src/venice-base/com/silverwrist/venice/CommunityVisibility.java new file mode 100644 index 0000000..167134a --- /dev/null +++ b/src/venice-base/com/silverwrist/venice/CommunityVisibility.java @@ -0,0 +1,74 @@ +/* + * The contents of this file are subject to the Mozilla Public License Version 1.1 + * (the "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at . + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT + * WARRANTY OF ANY KIND, either express or implied. See the License for the specific + * language governing rights and limitations under the License. + * + * The Original Code is the Venice Web Communities System. + * + * The Initial Developer of the Original Code is Eric J. Bowersox , + * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are + * Copyright (C) 2003 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. + * + * Contributor(s): + */ +package com.silverwrist.venice; + +import java.util.*; +import org.apache.commons.lang.enum.*; + +public final class CommunityVisibility extends Enum +{ + /*-------------------------------------------------------------------------------- + * The actual enumeration values + *-------------------------------------------------------------------------------- + */ + + public static final CommunityVisibility SEARCHDIR = new CommunityVisibility("SEARCHDIR"); + public static final CommunityVisibility SEARCHONLY = new CommunityVisibility("SEARCHONLY"); + public static final CommunityVisibility NONE = new CommunityVisibility("NONE"); + + /*-------------------------------------------------------------------------------- + * Constructor + *-------------------------------------------------------------------------------- + */ + + private CommunityVisibility(String name) + { + super(name); + + } // end constructor + + /*-------------------------------------------------------------------------------- + * Standard static method implementations + *-------------------------------------------------------------------------------- + */ + + public static CommunityVisibility getEnum(String name) + { + return (CommunityVisibility)getEnum(CommunityVisibility.class,name); + + } // end getEnum + + public static Map getEnumMap() + { + return getEnumMap(CommunityVisibility.class); + + } // end getEnumMap + + public static List getEnumList() + { + return getEnumList(CommunityVisibility.class); + + } // end getEnumList + + public static Iterator iterator() + { + return iterator(CommunityVisibility.class); + + } // end iterator + +} // end class CommunityVisibility diff --git a/src/venice-base/com/silverwrist/venice/community/CommunityService.java b/src/venice-base/com/silverwrist/venice/community/CommunityService.java new file mode 100644 index 0000000..221f302 --- /dev/null +++ b/src/venice-base/com/silverwrist/venice/community/CommunityService.java @@ -0,0 +1,53 @@ +/* + * The contents of this file are subject to the Mozilla Public License Version 1.1 + * (the "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at . + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT + * WARRANTY OF ANY KIND, either express or implied. See the License for the specific + * language governing rights and limitations under the License. + * + * The Original Code is the Venice Web Communities System. + * + * The Initial Developer of the Original Code is Eric J. Bowersox , + * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are + * Copyright (C) 2003 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. + * + * Contributor(s): + */ +package com.silverwrist.venice.community; + +import java.util.List; +import com.silverwrist.dynamo.except.DatabaseException; +import com.silverwrist.dynamo.except.DynamoSecurityException; +import com.silverwrist.dynamo.iface.DynamoUser; +import com.silverwrist.venice.CommunitySearchField; +import com.silverwrist.venice.SearchMode; +import com.silverwrist.venice.iface.VeniceCategory; +import com.silverwrist.venice.iface.VeniceCommunity; + +public interface CommunityService +{ + public List getMemberCommunities(DynamoUser caller, DynamoUser user) + throws DatabaseException, DynamoSecurityException; + + public VeniceCommunity getCommunity(int cid) throws DatabaseException; + + public VeniceCommunity getCommunity(String alias) throws DatabaseException; + + public List searchForCommunities(DynamoUser caller, CommunitySearchField field, SearchMode mode, String term, + int offset, int count) throws DatabaseException; + + public int getSearchCommunityCount(DynamoUser caller, CommunitySearchField field, SearchMode mode, String term) + throws DatabaseException; + + public List getCommunitiesInCategory(DynamoUser caller, int catid, int offset, int count) throws DatabaseException; + + public List getCommunitiesInCategory(DynamoUser caller, VeniceCategory cat, int offset, int count) + throws DatabaseException; + + public int getNumCommunitiesInCategory(DynamoUser caller, int catid) throws DatabaseException; + + public int getNumCommunitiesInCategory(DynamoUser caller, VeniceCategory cat) throws DatabaseException; + +} // end interface CommunityService diff --git a/src/venice-base/com/silverwrist/venice/iface/VeniceCommunity.java b/src/venice-base/com/silverwrist/venice/iface/VeniceCommunity.java new file mode 100644 index 0000000..c977ac4 --- /dev/null +++ b/src/venice-base/com/silverwrist/venice/iface/VeniceCommunity.java @@ -0,0 +1,87 @@ +/* + * The contents of this file are subject to the Mozilla Public License Version 1.1 + * (the "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at . + * + * Software distributed under the License is distributed on an "AS IS" basis, WITHOUT + * WARRANTY OF ANY KIND, either express or implied. See the License for the specific + * language governing rights and limitations under the License. + * + * The Original Code is the Venice Web Communities System. + * + * The Initial Developer of the Original Code is Eric J. Bowersox , + * for Silverwrist Design Studios. Portions created by Eric J. Bowersox are + * Copyright (C) 2003 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved. + * + * Contributor(s): + */ +package com.silverwrist.venice.iface; + +import java.security.Principal; +import java.security.acl.AclNotFoundException; +import java.util.Date; +import com.silverwrist.dynamo.except.DatabaseException; +import com.silverwrist.dynamo.except.DynamoSecurityException; +import com.silverwrist.dynamo.iface.DynamoAcl; +import com.silverwrist.dynamo.iface.DynamoGroup; +import com.silverwrist.dynamo.iface.DynamoUser; +import com.silverwrist.dynamo.iface.NamedObject; +import com.silverwrist.dynamo.iface.SecureObjectStore; +import com.silverwrist.venice.CommunityVisibility; + +public interface VeniceCommunity extends NamedObject, SecureObjectStore +{ + public int getCID(); + + public int getMemberGID(); + + public DynamoGroup getMemberGroup() throws DatabaseException; + + public int getHostGID(); + + public DynamoGroup getHostGroup() throws DatabaseException; + + public int getHostUID(); + + public DynamoUser getHostUser() throws DatabaseException; + + public DynamoAcl getAcl() throws DatabaseException, AclNotFoundException; + + public int getCategoryID(); + + public VeniceCategory getCategory() throws DatabaseException; + + public void setCategoryID(DynamoUser caller, int catid) throws DatabaseException, DynamoSecurityException; + + public void setCategory(DynamoUser caller, VeniceCategory cat) throws DatabaseException, DynamoSecurityException; + + public CommunityVisibility getVisibility(); + + public void setVisibility(DynamoUser caller, CommunityVisibility vis) + throws DatabaseException, DynamoSecurityException; + + public void setName(DynamoUser caller, String name) throws DatabaseException, DynamoSecurityException; + + public String getAlias(); + + public void setAlias(DynamoUser caller, String alias) throws DatabaseException, DynamoSecurityException; + + public java.util.Date getCreationDate(); + + public java.util.Date getLastAccessDate(); + + public void setLastAccessDate(DynamoUser caller, java.util.Date date) + throws DatabaseException, DynamoSecurityException; + + public java.util.Date getLastUpdateDate(); + + public void setLastUpdateDate(DynamoUser caller, java.util.Date date) + throws DatabaseException, DynamoSecurityException; + + public void grantAccess(DynamoUser caller, Principal subject, String auth_namespace, String auth_name, + String source_info, String auth_info, boolean single_use) + throws DatabaseException, DynamoSecurityException; + + public void revokeAccess(DynamoUser caller, Principal subject) throws DatabaseException, DynamoSecurityException; + +} // end interface VeniceCommunity