added the category reference table and some support code to manage it
This commit is contained in:
parent
6cf37bfee2
commit
0ffd03e38b
|
@ -165,6 +165,10 @@
|
||||||
|
|
||||||
<object name="venice-auditor" classname="com.silverwrist.venice.app.StartupShutdownAuditor" priority="100"/>
|
<object name="venice-auditor" classname="com.silverwrist.venice.app.StartupShutdownAuditor" priority="100"/>
|
||||||
|
|
||||||
|
<object name="categories" classname="com.silverwrist.venice.community.CategoryManager" priority="100"/>
|
||||||
|
<database connection="data"/>
|
||||||
|
</object>
|
||||||
|
|
||||||
<!-- Additional objects for SourceID interface -->
|
<!-- Additional objects for SourceID interface -->
|
||||||
|
|
||||||
<object name="sso" classname="com.silverwrist.venice.sourceid.FederationManagerObject" priority="20">
|
<object name="sso" classname="com.silverwrist.venice.sourceid.FederationManagerObject" priority="20">
|
||||||
|
|
|
@ -164,6 +164,10 @@
|
||||||
|
|
||||||
<object name="venice-auditor" classname="com.silverwrist.venice.app.StartupShutdownAuditor" priority="100"/>
|
<object name="venice-auditor" classname="com.silverwrist.venice.app.StartupShutdownAuditor" priority="100"/>
|
||||||
|
|
||||||
|
<object name="categories" classname="com.silverwrist.venice.community.CategoryManager" priority="100"/>
|
||||||
|
<database connection="data"/>
|
||||||
|
</object>
|
||||||
|
|
||||||
<!-- The Venice application layer -->
|
<!-- The Venice application layer -->
|
||||||
<application name="venice" classname="com.silverwrist.venice.app.VeniceApplication">
|
<application name="venice" classname="com.silverwrist.venice.app.VeniceApplication">
|
||||||
<stylesheet-mappings>
|
<stylesheet-mappings>
|
||||||
|
|
|
@ -253,6 +253,16 @@ CREATE TABLE menuitems (
|
||||||
PRIMARY KEY (menuid, sequence)
|
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,
|
||||||
|
UNIQUE INDEX display (parent, name)
|
||||||
|
);
|
||||||
|
|
||||||
##############################################################################
|
##############################################################################
|
||||||
# Set table access rights
|
# Set table access rights
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
@ -569,6 +579,378 @@ INSERT INTO imagetype (typecode, nsid, name) VALUES
|
||||||
|
|
||||||
#### following this line is initialization of Venice-specific tables ####
|
#### following this line is initialization of Venice-specific tables ####
|
||||||
|
|
||||||
|
# Populate the Category table.
|
||||||
|
# Source: Mozilla Open Directory Project categorization system <http://dmoz.org>;
|
||||||
|
# additional categorization from WebbMe categories
|
||||||
|
INSERT INTO refcategory (catid, parent, symlink, name) VALUES
|
||||||
|
(0, -1, -1, 'Unclassified'),
|
||||||
|
(1, -1, -1, 'Arts'),
|
||||||
|
(16, 1, -1, 'Animation'),
|
||||||
|
(17, 1, 181, 'Antiques'),
|
||||||
|
(18, 1, -1, 'Architecture'),
|
||||||
|
(19, 1, -1, 'Art History'),
|
||||||
|
(20, 1, -1, 'Body Art'),
|
||||||
|
(21, 1, -1, 'Celebrities'),
|
||||||
|
(22, 1, -1, 'Comics'),
|
||||||
|
(23, 1, -1, 'Crafts'),
|
||||||
|
(24, 1, -1, 'Dance'),
|
||||||
|
(25, 1, -1, 'Design'),
|
||||||
|
(26, 1, -1, 'Education'),
|
||||||
|
(27, 1, -1, 'Entertainment'),
|
||||||
|
(28, 1, -1, 'Graphic Design'),
|
||||||
|
(29, 1, -1, 'Humanities'),
|
||||||
|
(30, 1, -1, 'Illustration'),
|
||||||
|
(31, 1, -1, 'Literature'),
|
||||||
|
(32, 1, -1, 'Movies'),
|
||||||
|
(33, 1, -1, 'Music'),
|
||||||
|
(34, 1, -1, 'Myths and Folktales'),
|
||||||
|
(35, 1, -1, 'Native and Tribal'),
|
||||||
|
(36, 1, -1, 'Performing Arts'),
|
||||||
|
(37, 1, -1, 'Photography'),
|
||||||
|
(38, 1, -1, 'Radio'),
|
||||||
|
(39, 1, -1, 'Television'),
|
||||||
|
(40, 1, -1, 'Theatre'),
|
||||||
|
(41, 1, -1, 'Typography'),
|
||||||
|
(42, 1, -1, 'Video'),
|
||||||
|
(43, 1, -1, 'Visual Arts'),
|
||||||
|
(44, 1, -1, 'Writing'),
|
||||||
|
(2, -1, -1, 'Business'),
|
||||||
|
(45, 2, -1, 'Accounting'),
|
||||||
|
(46, 2, -1, 'Advertising'),
|
||||||
|
(47, 2, -1, 'Aerospace'),
|
||||||
|
(48, 2, -1, 'Agriculture and Forestry'),
|
||||||
|
(49, 2, -1, 'Apparel'),
|
||||||
|
(50, 2, -1, 'Arts and Entertainment'),
|
||||||
|
(51, 2, -1, 'Associations'),
|
||||||
|
(52, 2, -1, 'Aviation'),
|
||||||
|
(53, 2, -1, 'Business Services'),
|
||||||
|
(54, 2, 245, 'Classifieds'),
|
||||||
|
(55, 2, -1, 'Computers'),
|
||||||
|
(56, 2, -1, 'Consulting'),
|
||||||
|
(57, 2, -1, 'Construction and Maintenance'),
|
||||||
|
(58, 2, -1, 'Electronics'),
|
||||||
|
(59, 2, -1, 'Employment'),
|
||||||
|
(60, 2, -1, 'Energy and Utilities'),
|
||||||
|
(61, 2, -1, 'Environmental and Safety'),
|
||||||
|
(62, 2, -1, 'Financial Services'),
|
||||||
|
(63, 2, -1, 'Food and Related Products'),
|
||||||
|
(64, 2, -1, 'Insurance'),
|
||||||
|
(65, 2, -1, 'Internet Services'),
|
||||||
|
(66, 2, -1, 'Investing'),
|
||||||
|
(67, 2, 290, 'Law'),
|
||||||
|
(68, 2, -1, 'Management'),
|
||||||
|
(69, 2, -1, 'Manufacturing'),
|
||||||
|
(70, 2, -1, 'Marketing'),
|
||||||
|
(71, 2, -1, 'Mining and Drilling'),
|
||||||
|
(72, 2, -1, 'Printing'),
|
||||||
|
(73, 2, -1, 'Publishing'),
|
||||||
|
(74, 2, -1, 'Real Estate'),
|
||||||
|
(75, 2, -1, 'Retail'),
|
||||||
|
(76, 2, -1, 'Security'),
|
||||||
|
(77, 2, -1, 'Small Business'),
|
||||||
|
(78, 2, -1, 'Taxes'),
|
||||||
|
(79, 2, -1, 'Training and Schools'),
|
||||||
|
(80, 2, -1, 'Telecommunications'),
|
||||||
|
(81, 2, -1, 'Transportation'),
|
||||||
|
(82, 2, -1, 'Venture Capital'),
|
||||||
|
(3, -1, -1, 'Computers'),
|
||||||
|
(83, 3, -1, 'CAD'),
|
||||||
|
(84, 3, -1, 'Computer Science'),
|
||||||
|
(85, 3, -1, 'Consultants'),
|
||||||
|
(86, 3, -1, 'Data Communications'),
|
||||||
|
(87, 3, -1, 'Desktop Publishing'),
|
||||||
|
(88, 3, -1, 'Education'),
|
||||||
|
(89, 3, -1, 'Ethics'),
|
||||||
|
(90, 3, -1, 'Fonts'),
|
||||||
|
(91, 3, 124, 'Games'),
|
||||||
|
(92, 3, -1, 'Graphics'),
|
||||||
|
(93, 3, -1, 'Hacking'),
|
||||||
|
(94, 3, -1, 'Hardware'),
|
||||||
|
(95, 3, -1, 'History'),
|
||||||
|
(96, 3, -1, 'Internet'),
|
||||||
|
(97, 3, -1, 'Multimedia'),
|
||||||
|
(98, 3, -1, 'Open Source'),
|
||||||
|
(99, 3, -1, 'Operating Systems'),
|
||||||
|
(100, 3, -1, 'Programming'),
|
||||||
|
(101, 3, -1, 'Robotics'),
|
||||||
|
(102, 3, -1, 'Security'),
|
||||||
|
(103, 3, -1, 'Shopping'),
|
||||||
|
(104, 3, -1, 'Software'),
|
||||||
|
(105, 3, -1, 'Systems'),
|
||||||
|
(4, -1, -1, 'Games'),
|
||||||
|
(106, 4, -1, 'Board Games'),
|
||||||
|
(107, 4, -1, 'Card Games'),
|
||||||
|
(108, 4, -1, 'Coin-op Games'),
|
||||||
|
(109, 4, 123, 'Collectible Card Games'),
|
||||||
|
(110, 4, -1, 'Dice Games'),
|
||||||
|
(111, 4, 319, 'Fantasy Sports'),
|
||||||
|
(112, 4, -1, 'Gambling'),
|
||||||
|
(113, 4, -1, 'Game Creation Systems'),
|
||||||
|
(114, 4, -1, 'Game Design'),
|
||||||
|
(115, 4, -1, 'Hand Games'),
|
||||||
|
(116, 4, -1, 'Internet Games'),
|
||||||
|
(117, 4, -1, 'Party Games'),
|
||||||
|
(118, 4, -1, 'Puzzles'),
|
||||||
|
(119, 4, 270, 'Retailers'),
|
||||||
|
(120, 4, -1, 'Roleplaying Games'),
|
||||||
|
(121, 4, 14, 'Sports'),
|
||||||
|
(122, 4, -1, 'Tile Games'),
|
||||||
|
(123, 4, -1, 'Trading Cards'),
|
||||||
|
(124, 4, -1, 'Video Games'),
|
||||||
|
(125, 4, -1, 'Yard and Deck Games'),
|
||||||
|
(5, -1, -1, 'Health'),
|
||||||
|
(126, 5, -1, 'Aging'),
|
||||||
|
(127, 5, -1, 'Alternative Medicine'),
|
||||||
|
(128, 5, -1, 'Beauty'),
|
||||||
|
(129, 5, -1, 'Children''s Health'),
|
||||||
|
(130, 5, -1, 'Conditions and Diseases'),
|
||||||
|
(131, 5, -1, 'Dentistry'),
|
||||||
|
(132, 5, 280, 'Disabilities'),
|
||||||
|
(133, 5, -1, 'Education'),
|
||||||
|
(134, 5, -1, 'Fitness'),
|
||||||
|
(135, 5, 64, 'Health Insurance'),
|
||||||
|
(136, 5, -1, 'Medicine'),
|
||||||
|
(137, 5, -1, 'Men''s Health'),
|
||||||
|
(138, 5, -1, 'Mental Health'),
|
||||||
|
(139, 5, -1, 'Nursing'),
|
||||||
|
(140, 5, -1, 'Nutrition'),
|
||||||
|
(141, 5, -1, 'Occupational Health and Safety'),
|
||||||
|
(142, 5, -1, 'Pharmacy'),
|
||||||
|
(143, 5, -1, 'Public Health and Safety'),
|
||||||
|
(144, 5, -1, 'Reproductive Health'),
|
||||||
|
(145, 5, -1, 'Seniors'' Health'),
|
||||||
|
(146, 5, -1, 'Services'),
|
||||||
|
(147, 5, -1, 'Substance Abuse'),
|
||||||
|
(148, 5, -1, 'Teen Health'),
|
||||||
|
(149, 5, -1, 'Women''s Health'),
|
||||||
|
(6, -1, -1, 'Home'),
|
||||||
|
(150, 6, -1, 'Apartment Living'),
|
||||||
|
(151, 6, -1, 'Cooking'),
|
||||||
|
(152, 6, -1, 'Do-It-Yourself'),
|
||||||
|
(153, 6, -1, 'Emergency Preparation'),
|
||||||
|
(154, 6, -1, 'Entertaining'),
|
||||||
|
(155, 6, -1, 'Family'),
|
||||||
|
(156, 6, -1, 'Gardens'),
|
||||||
|
(157, 6, -1, 'Home Improvement'),
|
||||||
|
(158, 6, -1, 'Homemaking'),
|
||||||
|
(363, 6, -1, 'Homeowners'),
|
||||||
|
(159, 6, -1, 'Kids'),
|
||||||
|
(160, 6, -1, 'Moving and Relocating'),
|
||||||
|
(161, 6, -1, 'Nursery'),
|
||||||
|
(162, 6, 207, 'Pets'),
|
||||||
|
(163, 6, -1, 'Personal Finance'),
|
||||||
|
(164, 6, -1, 'Personal Organization'),
|
||||||
|
(165, 6, -1, 'Relatives'),
|
||||||
|
(166, 6, -1, 'Rural Living'),
|
||||||
|
(167, 6, 12, 'Shopping'),
|
||||||
|
(168, 6, -1, 'Urban Living'),
|
||||||
|
(7, -1, -1, 'News'),
|
||||||
|
(169, 7, -1, 'Alternative Media'),
|
||||||
|
(170, 7, -1, 'Columnists'),
|
||||||
|
(171, 7, -1, 'Current Events'),
|
||||||
|
(172, 7, -1, 'Magazines'),
|
||||||
|
(173, 7, -1, 'Media'),
|
||||||
|
(174, 7, -1, 'Newspapers'),
|
||||||
|
(175, 7, -1, 'Online'),
|
||||||
|
(176, 7, -1, 'Politics'),
|
||||||
|
(177, 7, -1, 'Satire'),
|
||||||
|
(178, 7, -1, 'Weather'),
|
||||||
|
(8, -1, -1, 'Recreation'),
|
||||||
|
(179, 8, -1, 'Air Hockey'),
|
||||||
|
(180, 8, -1, 'Amateur Radio'),
|
||||||
|
(181, 8, -1, 'Antiques'),
|
||||||
|
(182, 8, -1, 'Audio'),
|
||||||
|
(183, 8, -1, 'Aviation'),
|
||||||
|
(184, 8, -1, 'Birdwatching'),
|
||||||
|
(185, 8, -1, 'Boating'),
|
||||||
|
(186, 8, 310, 'Bowling'),
|
||||||
|
(187, 8, -1, 'Climbing'),
|
||||||
|
(188, 8, -1, 'Collecting'),
|
||||||
|
(189, 8, 23, 'Crafts'),
|
||||||
|
(190, 8, -1, 'Drugs'),
|
||||||
|
(191, 8, -1, 'Food and Drink'),
|
||||||
|
(192, 8, 4, 'Games'),
|
||||||
|
(193, 8, 156, 'Gardens'),
|
||||||
|
(194, 8, 285, 'Genealogy'),
|
||||||
|
(195, 8, -1, 'Guns'),
|
||||||
|
(196, 8, -1, 'Hot Air Ballooning'),
|
||||||
|
(197, 8, -1, 'Humor'),
|
||||||
|
(198, 8, -1, 'Kites'),
|
||||||
|
(199, 8, -1, 'Knives'),
|
||||||
|
(200, 8, -1, 'Living History'),
|
||||||
|
(201, 8, 332, 'Martial Arts'),
|
||||||
|
(202, 8, -1, 'Models'),
|
||||||
|
(203, 8, -1, 'Motorcycles'),
|
||||||
|
(204, 8, -1, 'Nudism'),
|
||||||
|
(205, 8, -1, 'Outdoors'),
|
||||||
|
(206, 8, -1, 'Parties'),
|
||||||
|
(207, 8, -1, 'Pets'),
|
||||||
|
(208, 8, -1, 'Roads and Highways'),
|
||||||
|
(209, 8, -1, 'Scouting'),
|
||||||
|
(210, 8, -1, 'Smoking'),
|
||||||
|
(211, 8, 14, 'Sports'),
|
||||||
|
(212, 8, -1, 'Theme Parks'),
|
||||||
|
(213, 8, -1, 'Trains and Railroads'),
|
||||||
|
(214, 8, -1, 'Travel'),
|
||||||
|
(9, -1, -1, 'Reference and Education'),
|
||||||
|
(215, 9, -1, 'Alumni'),
|
||||||
|
(216, 9, -1, 'Colleges and Universities'),
|
||||||
|
(217, 9, -1, 'Continuing Education'),
|
||||||
|
(218, 9, 79, 'Corporate Training'),
|
||||||
|
(219, 9, -1, 'Distance Learning'),
|
||||||
|
(220, 9, -1, 'International'),
|
||||||
|
(221, 9, -1, 'K through 12'),
|
||||||
|
(222, 9, -1, 'Libraries'),
|
||||||
|
(223, 9, -1, 'Museums'),
|
||||||
|
(224, 9, -1, 'Special Education'),
|
||||||
|
(225, 9, -1, 'Vocational Education'),
|
||||||
|
(10, -1, -1, 'Regional'),
|
||||||
|
(226, 10, -1, 'International'),
|
||||||
|
(227, 10, -1, 'US'),
|
||||||
|
(11, -1, -1, 'Science'),
|
||||||
|
(228, 11, -1, 'Agriculture'),
|
||||||
|
(229, 11, -1, 'Alternative Science'),
|
||||||
|
(230, 11, -1, 'Astronomy'),
|
||||||
|
(231, 11, -1, 'Biology'),
|
||||||
|
(232, 11, -1, 'Chemistry'),
|
||||||
|
(233, 11, -1, 'Earth Sciences'),
|
||||||
|
(234, 11, -1, 'Environment'),
|
||||||
|
(235, 11, -1, 'Mathematics'),
|
||||||
|
(236, 11, -1, 'Physics'),
|
||||||
|
(237, 11, -1, 'Science in Society'),
|
||||||
|
(238, 11, -1, 'Social Sciences'),
|
||||||
|
(239, 11, -1, 'Space'),
|
||||||
|
(240, 11, -1, 'Technology'),
|
||||||
|
(12, -1, -1, 'Shopping'),
|
||||||
|
(241, 12, -1, 'Antiques and Collectibles'),
|
||||||
|
(242, 12, -1, 'Auctions'),
|
||||||
|
(243, 12, -1, 'Books'),
|
||||||
|
(244, 12, -1, 'Children'),
|
||||||
|
(245, 12, -1, 'Classifieds'),
|
||||||
|
(246, 12, -1, 'Clothing'),
|
||||||
|
(247, 12, 103, 'Computers'),
|
||||||
|
(248, 12, -1, 'Consumer Electronics'),
|
||||||
|
(249, 12, -1, 'Crafts'),
|
||||||
|
(250, 12, -1, 'Entertainment'),
|
||||||
|
(251, 12, -1, 'Ethnic and Regional'),
|
||||||
|
(252, 12, -1, 'Flowers'),
|
||||||
|
(253, 12, -1, 'Food and Drink'),
|
||||||
|
(254, 12, -1, 'Furniture'),
|
||||||
|
(255, 12, -1, 'Gifts'),
|
||||||
|
(256, 12, -1, 'Health and Beauty'),
|
||||||
|
(257, 12, -1, 'Holidays'),
|
||||||
|
(258, 12, -1, 'Home and Garden'),
|
||||||
|
(259, 12, -1, 'Jewelry'),
|
||||||
|
(260, 12, -1, 'Music and Video'),
|
||||||
|
(261, 12, -1, 'Niche'),
|
||||||
|
(262, 12, -1, 'Office Products'),
|
||||||
|
(263, 12, -1, 'Pets'),
|
||||||
|
(264, 12, -1, 'Photography'),
|
||||||
|
(265, 12, -1, 'Recreation and Hobbies'),
|
||||||
|
(266, 12, -1, 'Religious'),
|
||||||
|
(267, 12, -1, 'Sports'),
|
||||||
|
(268, 12, -1, 'Tobacco'),
|
||||||
|
(269, 12, -1, 'Tools'),
|
||||||
|
(270, 12, -1, 'Toys and Games'),
|
||||||
|
(271, 12, -1, 'Travel'),
|
||||||
|
(272, 12, -1, 'Vehicles'),
|
||||||
|
(273, 12, -1, 'Visual Arts'),
|
||||||
|
(274, 12, -1, 'Weddings'),
|
||||||
|
(275, 12, -1, 'Wholesale'),
|
||||||
|
(13, -1, -1, 'Society'),
|
||||||
|
(276, 13, -1, 'Activism'),
|
||||||
|
(277, 13, -1, 'Advice'),
|
||||||
|
(278, 13, -1, 'Crime'),
|
||||||
|
(279, 13, -1, 'Death'),
|
||||||
|
(280, 13, -1, 'Disabled'),
|
||||||
|
(281, 13, -1, 'Ethnicity'),
|
||||||
|
(282, 13, -1, 'Folklore'),
|
||||||
|
(283, 13, -1, 'Future'),
|
||||||
|
(284, 13, -1, 'Gay/Lesbian/Bisexual'),
|
||||||
|
(285, 13, -1, 'Genealogy'),
|
||||||
|
(286, 13, -1, 'Government'),
|
||||||
|
(287, 13, -1, 'History'),
|
||||||
|
(288, 13, -1, 'Holidays'),
|
||||||
|
(289, 13, -1, 'Issues'),
|
||||||
|
(290, 13, -1, 'Law'),
|
||||||
|
(291, 13, -1, 'Lifestyle Choices'),
|
||||||
|
(292, 13, -1, 'Military'),
|
||||||
|
(293, 13, -1, 'Paranormal'),
|
||||||
|
(294, 13, -1, 'People'),
|
||||||
|
(295, 13, -1, 'Philosophy'),
|
||||||
|
(296, 13, -1, 'Politics'),
|
||||||
|
(297, 13, -1, 'Recovery and Support Groups'),
|
||||||
|
(298, 13, -1, 'Relationships'),
|
||||||
|
(299, 13, -1, 'Religion and Spirituality'),
|
||||||
|
(300, 13, -1, 'Sexuality'),
|
||||||
|
(301, 13, -1, 'Subcultures'),
|
||||||
|
(302, 13, -1, 'Transgendered'),
|
||||||
|
(303, 13, -1, 'Work'),
|
||||||
|
(14, -1, -1, 'Sports'),
|
||||||
|
(304, 14, -1, 'Archery'),
|
||||||
|
(305, 14, -1, 'Badminton'),
|
||||||
|
(306, 14, -1, 'Baseball'),
|
||||||
|
(307, 14, -1, 'Basketball'),
|
||||||
|
(308, 14, -1, 'Billiards'),
|
||||||
|
(309, 14, -1, 'Boomerang'),
|
||||||
|
(310, 14, -1, 'Bowling'),
|
||||||
|
(311, 14, -1, 'Boxing'),
|
||||||
|
(312, 14, -1, 'Cheerleading'),
|
||||||
|
(313, 14, -1, 'Cricket'),
|
||||||
|
(314, 14, -1, 'Croquet'),
|
||||||
|
(315, 14, -1, 'Cycling'),
|
||||||
|
(316, 14, -1, 'Darts'),
|
||||||
|
(317, 14, -1, 'Equestrian'),
|
||||||
|
(318, 14, -1, 'Extreme Sports'),
|
||||||
|
(319, 14, -1, 'Fantasy'),
|
||||||
|
(320, 14, -1, 'Fencing'),
|
||||||
|
(321, 14, -1, 'Fishing'),
|
||||||
|
(322, 14, -1, 'Flying Discs'),
|
||||||
|
(323, 14, -1, 'Football'),
|
||||||
|
(324, 14, -1, 'Golf'),
|
||||||
|
(325, 14, -1, 'Greyhound Racing'),
|
||||||
|
(326, 14, -1, 'Gymnastics'),
|
||||||
|
(327, 14, -1, 'Handball'),
|
||||||
|
(328, 14, -1, 'Hockey'),
|
||||||
|
(329, 14, -1, 'Lacrosse'),
|
||||||
|
(330, 14, -1, 'Laser Games'),
|
||||||
|
(331, 14, -1, 'Lumberjack'),
|
||||||
|
(332, 14, -1, 'Martial Arts'),
|
||||||
|
(333, 14, -1, 'Motor Sports'),
|
||||||
|
(334, 14, -1, 'Orienteering'),
|
||||||
|
(335, 14, -1, 'Paintball'),
|
||||||
|
(336, 14, -1, 'Racquetball'),
|
||||||
|
(337, 14, -1, 'Rodeo'),
|
||||||
|
(338, 14, -1, 'Roller Derby'),
|
||||||
|
(339, 14, -1, 'Rope Skipping'),
|
||||||
|
(340, 14, -1, 'Rugby'),
|
||||||
|
(341, 14, -1, 'Running'),
|
||||||
|
(342, 14, -1, 'Sailing'),
|
||||||
|
(343, 14, -1, 'Shooting'),
|
||||||
|
(344, 14, 267, 'Shopping'),
|
||||||
|
(345, 14, -1, 'Skateboarding'),
|
||||||
|
(346, 14, -1, 'Skating'),
|
||||||
|
(347, 14, -1, 'Skiing'),
|
||||||
|
(348, 14, -1, 'Sledding'),
|
||||||
|
(349, 14, -1, 'Sled Dog Racing'),
|
||||||
|
(350, 14, -1, 'Snowboarding'),
|
||||||
|
(351, 14, -1, 'Soccer'),
|
||||||
|
(352, 14, -1, 'Softball'),
|
||||||
|
(353, 14, -1, 'Squash'),
|
||||||
|
(354, 14, -1, 'Strength Sports'),
|
||||||
|
(355, 14, -1, 'Table Tennis'),
|
||||||
|
(356, 14, -1, 'Tennis'),
|
||||||
|
(357, 14, -1, 'Track and Field'),
|
||||||
|
(358, 14, -1, 'Volleyball'),
|
||||||
|
(359, 14, -1, 'Walking'),
|
||||||
|
(360, 14, -1, 'Water Sports'),
|
||||||
|
(361, 14, -1, 'Winter Sports'),
|
||||||
|
(362, 14, -1, 'Wrestling'),
|
||||||
|
(15, -1, -1, '***DEPRECATED***');
|
||||||
|
### -- LAST IS 363 -- ###
|
||||||
|
|
||||||
|
UPDATE refcategory SET dontuse = 1 WHERE catid = 15;
|
||||||
|
|
||||||
# Create the "global" menu. (ID #1)
|
# Create the "global" menu. (ID #1)
|
||||||
INSERT INTO menus (menuid, menu_nsid, menu_name, title, subtitle)
|
INSERT INTO menus (menuid, menu_nsid, menu_name, title, subtitle)
|
||||||
VALUES (1, 1, 'fixed.menu', 'About This Site', NULL);
|
VALUES (1, 1, 'fixed.menu', 'About This Site', NULL);
|
||||||
|
|
74
src/venice-base/com/silverwrist/venice/SearchMode.java
Normal file
74
src/venice-base/com/silverwrist/venice/SearchMode.java
Normal file
|
@ -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 <http://www.mozilla.org/MPL/>.
|
||||||
|
*
|
||||||
|
* 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 <erbo@silcom.com>,
|
||||||
|
* 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 SearchMode extends Enum
|
||||||
|
{
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* The actual enumeration values
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static final SearchMode PREFIX = new SearchMode("PREFIX");
|
||||||
|
public static final SearchMode SUBSTRING = new SearchMode("SUBSTRING");
|
||||||
|
public static final SearchMode REGEXP = new SearchMode("REGEXP");
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Constructor
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private SearchMode(String name)
|
||||||
|
{
|
||||||
|
super(name);
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Standard static method implementations
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public static SearchMode getEnum(String name)
|
||||||
|
{
|
||||||
|
return (SearchMode)getEnum(SearchMode.class,name);
|
||||||
|
|
||||||
|
} // end getEnum
|
||||||
|
|
||||||
|
public static Map getEnumMap()
|
||||||
|
{
|
||||||
|
return getEnumMap(SearchMode.class);
|
||||||
|
|
||||||
|
} // end getEnumMap
|
||||||
|
|
||||||
|
public static List getEnumList()
|
||||||
|
{
|
||||||
|
return getEnumList(SearchMode.class);
|
||||||
|
|
||||||
|
} // end getEnumList
|
||||||
|
|
||||||
|
public static Iterator iterator()
|
||||||
|
{
|
||||||
|
return iterator(SearchMode.class);
|
||||||
|
|
||||||
|
} // end iterator
|
||||||
|
|
||||||
|
} // end class SearchMode
|
|
@ -0,0 +1,241 @@
|
||||||
|
/*
|
||||||
|
* 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 <http://www.mozilla.org/MPL/>.
|
||||||
|
*
|
||||||
|
* 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 <erbo@silcom.com>,
|
||||||
|
* 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.*;
|
||||||
|
import com.silverwrist.dynamo.except.*;
|
||||||
|
import com.silverwrist.venice.iface.VeniceCategory;
|
||||||
|
|
||||||
|
class CategoryImpl implements VeniceCategory
|
||||||
|
{
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Internal class for saving category segments
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static class Segment
|
||||||
|
{
|
||||||
|
/*====================================================================
|
||||||
|
* Attributes
|
||||||
|
*====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
private int id; // ID of this category
|
||||||
|
private String name; // name of this segment
|
||||||
|
|
||||||
|
/*====================================================================
|
||||||
|
* Constructor
|
||||||
|
*====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
Segment(int id, String name)
|
||||||
|
{
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
/*====================================================================
|
||||||
|
* Public getters
|
||||||
|
*====================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
final int getID()
|
||||||
|
{
|
||||||
|
return id;
|
||||||
|
|
||||||
|
} // end getID
|
||||||
|
|
||||||
|
final String getName()
|
||||||
|
{
|
||||||
|
return name;
|
||||||
|
|
||||||
|
} // end getName
|
||||||
|
|
||||||
|
} // end class Segment
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Attributes
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private CategoryManager m_mgr; // pointer to manager object
|
||||||
|
private LinkedList m_cats; // the actual category segments
|
||||||
|
private int m_symlink = -1; // if our category is actually a symlink
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Constructors
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
CategoryImpl(CategoryManager mgr)
|
||||||
|
{
|
||||||
|
m_mgr = mgr;
|
||||||
|
m_cats = new LinkedList();
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
CategoryImpl(CategoryManager mgr, int id, int symlink, String name)
|
||||||
|
{
|
||||||
|
m_mgr = mgr;
|
||||||
|
m_cats = new LinkedList();
|
||||||
|
m_symlink = symlink;
|
||||||
|
m_cats.add(new Segment(id,name));
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
CategoryImpl(CategoryImpl parent, int id, int symlink, String name)
|
||||||
|
{
|
||||||
|
m_mgr = parent.m_mgr;
|
||||||
|
m_cats = (LinkedList)(parent.m_cats.clone());
|
||||||
|
m_symlink = symlink;
|
||||||
|
m_cats.add(new Segment(id,name));
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
private CategoryImpl(CategoryImpl other, int copy_levels)
|
||||||
|
{
|
||||||
|
m_mgr = other.m_mgr;
|
||||||
|
m_cats = new LinkedList();
|
||||||
|
m_symlink = ((copy_levels==other.m_cats.size()) ? other.m_symlink : -1);
|
||||||
|
Iterator it = other.m_cats.iterator();
|
||||||
|
for (int i=0; i<copy_levels; i++)
|
||||||
|
m_cats.add(it.next());
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Implementations from interface VeniceCategory
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public int getCategoryID()
|
||||||
|
{
|
||||||
|
if (m_cats.size()>0)
|
||||||
|
return ((Segment)(m_cats.getLast())).getID();
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
} // end getCategoryID
|
||||||
|
|
||||||
|
public int getNumLevels()
|
||||||
|
{
|
||||||
|
return m_cats.size();
|
||||||
|
|
||||||
|
} // end getNumLevels
|
||||||
|
|
||||||
|
public int getIDAtLevel(int level)
|
||||||
|
{
|
||||||
|
return ((Segment)(m_cats.get(level))).getID();
|
||||||
|
|
||||||
|
} // end getIDAtLevel
|
||||||
|
|
||||||
|
public String getTitleAtLevel(int level)
|
||||||
|
{
|
||||||
|
return ((Segment)(m_cats.get(level))).getName();
|
||||||
|
|
||||||
|
} // end getTitleAtLevel
|
||||||
|
|
||||||
|
public List getSubCategories() throws DatabaseException
|
||||||
|
{
|
||||||
|
return m_mgr.getCategorySublist(this.getLinkedCategoryID());
|
||||||
|
|
||||||
|
} // end getSubCategories
|
||||||
|
|
||||||
|
public VeniceCategory getSuperCategory(int levels)
|
||||||
|
{
|
||||||
|
return m_mgr.canonicalize(new CategoryImpl(this,levels));
|
||||||
|
|
||||||
|
} // end getSuperCategory
|
||||||
|
|
||||||
|
public VeniceCategory getParentCategory()
|
||||||
|
{
|
||||||
|
return m_mgr.canonicalize(new CategoryImpl(this,m_cats.size()-1));
|
||||||
|
|
||||||
|
} // end getParentCategoryID
|
||||||
|
|
||||||
|
public int getLinkedCategoryID()
|
||||||
|
{
|
||||||
|
if (m_symlink>=0)
|
||||||
|
return m_symlink;
|
||||||
|
else
|
||||||
|
return this.getCategoryID();
|
||||||
|
|
||||||
|
} // end getLinkedCategoryID
|
||||||
|
|
||||||
|
public boolean isSymbolicLink()
|
||||||
|
{
|
||||||
|
return (m_symlink>=0);
|
||||||
|
|
||||||
|
} // end isSymbolicLink
|
||||||
|
|
||||||
|
public VeniceCategory getLinkedCategory() throws DatabaseException
|
||||||
|
{
|
||||||
|
if (m_symlink<0)
|
||||||
|
return this;
|
||||||
|
return (VeniceCategory)(m_mgr.lookup(m_symlink));
|
||||||
|
|
||||||
|
} // end getLinkedCategory
|
||||||
|
|
||||||
|
public boolean equals(Object obj)
|
||||||
|
{
|
||||||
|
if (obj==null)
|
||||||
|
return false;
|
||||||
|
if (obj instanceof VeniceCategory)
|
||||||
|
return (((VeniceCategory)obj).getLinkedCategoryID()==this.getLinkedCategoryID());
|
||||||
|
return this.toString().equals(obj.toString());
|
||||||
|
|
||||||
|
} // end equals
|
||||||
|
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
return this.getLinkedCategoryID();
|
||||||
|
|
||||||
|
} // end hashCode
|
||||||
|
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
StringBuffer buf = new StringBuffer();
|
||||||
|
Iterator it = m_cats.iterator();
|
||||||
|
while (it.hasNext())
|
||||||
|
{ // concatenate all the parts together
|
||||||
|
Segment seg = (Segment)(it.next());
|
||||||
|
if (buf.length()>0)
|
||||||
|
buf.append(": ");
|
||||||
|
buf.append(seg.getName());
|
||||||
|
|
||||||
|
} // end while
|
||||||
|
|
||||||
|
return buf.toString();
|
||||||
|
|
||||||
|
} // end toString
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* External operations
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
void dispose()
|
||||||
|
{
|
||||||
|
m_mgr = null;
|
||||||
|
m_cats.clear();
|
||||||
|
m_cats = null;
|
||||||
|
|
||||||
|
} // end dispose
|
||||||
|
|
||||||
|
} // end class CategoryImpl
|
|
@ -0,0 +1,286 @@
|
||||||
|
/*
|
||||||
|
* 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 <http://www.mozilla.org/MPL/>.
|
||||||
|
*
|
||||||
|
* 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 <erbo@silcom.com>,
|
||||||
|
* 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.*;
|
||||||
|
import org.apache.commons.collections.*;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
import org.w3c.dom.*;
|
||||||
|
import com.silverwrist.util.xml.*;
|
||||||
|
import com.silverwrist.dynamo.except.*;
|
||||||
|
import com.silverwrist.dynamo.iface.*;
|
||||||
|
import com.silverwrist.dynamo.util.*;
|
||||||
|
import com.silverwrist.venice.SearchMode;
|
||||||
|
import com.silverwrist.venice.iface.VeniceCategory;
|
||||||
|
|
||||||
|
public class CategoryManager implements NamedObject, ComponentInitialize, ComponentShutdown, CategoryService
|
||||||
|
{
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Static data members
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static Logger logger = Logger.getLogger(CategoryManager.class);
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Attributes
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private String m_name; // this object's name
|
||||||
|
private CategoryOps m_ops; // database operations
|
||||||
|
private ReferenceMap m_categories; // cached category values
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Constructor
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public CategoryManager()
|
||||||
|
{
|
||||||
|
m_categories = new ReferenceMap(ReferenceMap.HARD,ReferenceMap.SOFT);
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Internal operations
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private final List convertList(List base) throws DatabaseException
|
||||||
|
{
|
||||||
|
if (base.isEmpty())
|
||||||
|
return Collections.EMPTY_LIST;
|
||||||
|
|
||||||
|
ArrayList rc = new ArrayList(base.size());
|
||||||
|
synchronized (this)
|
||||||
|
{ // convert the tuples list ont a full category list
|
||||||
|
Iterator it = base.iterator();
|
||||||
|
while (it.hasNext())
|
||||||
|
{ // get the tuple from the list and convert it
|
||||||
|
CategoryTuple tuple = (CategoryTuple)(it.next());
|
||||||
|
Integer key = new Integer(tuple.getCategoryID());
|
||||||
|
VeniceCategory cat = (VeniceCategory)(m_categories.get(key));
|
||||||
|
if (cat==null)
|
||||||
|
{ // need to create a new category object and add it
|
||||||
|
if (tuple.getParentCategoryID()<0)
|
||||||
|
cat = new CategoryImpl(this,tuple.getCategoryID(),tuple.getSymlink(),tuple.getName());
|
||||||
|
else
|
||||||
|
cat = new CategoryImpl(lookup(tuple.getParentCategoryID()),tuple.getCategoryID(),tuple.getSymlink(),
|
||||||
|
tuple.getName());
|
||||||
|
m_categories.put(key,cat);
|
||||||
|
|
||||||
|
} // end if
|
||||||
|
|
||||||
|
rc.add(cat);
|
||||||
|
|
||||||
|
} // end while
|
||||||
|
|
||||||
|
} // end synchronized block
|
||||||
|
|
||||||
|
return Collections.unmodifiableList(rc);
|
||||||
|
|
||||||
|
} // end convertList
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Implementations from interface NamedObject
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public String getName()
|
||||||
|
{
|
||||||
|
return m_name;
|
||||||
|
|
||||||
|
} // end getName
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Implementations from interface ComponentInitialize
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initialize the component.
|
||||||
|
*
|
||||||
|
* @param config_root Pointer to the section of the Dynamo XML configuration file that configures this
|
||||||
|
* particular component. This is to be considered "read-only" by the component.
|
||||||
|
* @param services An implementation of {@link com.silverwrist.dynamo.iface.ServiceProvider ServiceProvider}
|
||||||
|
* which provides initialization services to the component. This will include an implementation
|
||||||
|
* of {@link com.silverwrist.dynamo.iface.ObjectProvider ObjectProvider} which may be used to
|
||||||
|
* get information about other objects previously initialized by the application.
|
||||||
|
* @exception com.silverwrist.dynamo.except.ConfigException If an error is encountered in the component
|
||||||
|
* configuration.
|
||||||
|
*/
|
||||||
|
public void initialize(Element config_root, ServiceProvider services) throws ConfigException
|
||||||
|
{
|
||||||
|
logger.info("CategoryManager initializing");
|
||||||
|
|
||||||
|
XMLLoader loader = XMLLoader.get();
|
||||||
|
String name_pool = null;
|
||||||
|
try
|
||||||
|
{ // verify the right node name
|
||||||
|
loader.verifyNodeName(config_root,"object");
|
||||||
|
|
||||||
|
// get the object's name
|
||||||
|
m_name = loader.getAttribute(config_root,"name");
|
||||||
|
|
||||||
|
// get the name of the database pool
|
||||||
|
DOMElementHelper config_root_h = new DOMElementHelper(config_root);
|
||||||
|
Element foo = loader.getSubElement(config_root_h,"database");
|
||||||
|
name_pool = loader.getAttribute(foo,"connection");
|
||||||
|
|
||||||
|
} // end try
|
||||||
|
catch (XMLLoadException e)
|
||||||
|
{ // error loading XML config data
|
||||||
|
logger.fatal("XML loader exception in StandardContentSupplier",e);
|
||||||
|
throw new ConfigException(e);
|
||||||
|
|
||||||
|
} // end catch
|
||||||
|
|
||||||
|
// Get the database connection pool.
|
||||||
|
DBConnectionPool pool = GetObjectUtils.getDatabaseConnection(services,name_pool);
|
||||||
|
|
||||||
|
// Get the operations object.
|
||||||
|
m_ops = CategoryOps.get(pool);
|
||||||
|
|
||||||
|
} // end initialize
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Implementations from interface ComponentShutdown
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public void shutdown()
|
||||||
|
{
|
||||||
|
m_categories.clear();
|
||||||
|
m_ops = null;
|
||||||
|
|
||||||
|
} // end shutdown
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Implementations from interface CategoryService
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public boolean isValidCategoryID(int catid)
|
||||||
|
{
|
||||||
|
if (catid==-1)
|
||||||
|
return true; // valid by definition; it means "Top"
|
||||||
|
if (m_categories.containsKey(new Integer(catid)))
|
||||||
|
return true; // already present in our category map, it must be OK
|
||||||
|
try
|
||||||
|
{ // call down to the database
|
||||||
|
return m_ops.verifyCategoryID(catid);
|
||||||
|
|
||||||
|
} // end try
|
||||||
|
catch (DatabaseException e)
|
||||||
|
{ // don't throw this exception!
|
||||||
|
logger.warn("CategoryManager.isValidCategoryID(): database failure",e);
|
||||||
|
|
||||||
|
} // end catch
|
||||||
|
|
||||||
|
return false; // default return
|
||||||
|
|
||||||
|
} // end isValidCategoryID
|
||||||
|
|
||||||
|
public List getRootCategoryList() throws DatabaseException
|
||||||
|
{
|
||||||
|
return getCategorySublist(-1);
|
||||||
|
|
||||||
|
} // end getRootCategoryList
|
||||||
|
|
||||||
|
public VeniceCategory getCategory(int catid) throws DatabaseException
|
||||||
|
{
|
||||||
|
return (VeniceCategory)lookup(catid);
|
||||||
|
|
||||||
|
} // end getCategory
|
||||||
|
|
||||||
|
public List searchForCategories(SearchMode mode, String term, int offset, int count) throws DatabaseException
|
||||||
|
{
|
||||||
|
return convertList(m_ops.search(mode,term,offset,count));
|
||||||
|
|
||||||
|
} // end searchForCategories
|
||||||
|
|
||||||
|
public int getSearchCategoryCount(SearchMode mode, String term) throws DatabaseException
|
||||||
|
{
|
||||||
|
return m_ops.getSearchCount(mode,term);
|
||||||
|
|
||||||
|
} // end getSearchCategoryCount
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* External operations
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
synchronized CategoryImpl lookup(int catid) throws DatabaseException
|
||||||
|
{
|
||||||
|
Integer key = new Integer(catid);
|
||||||
|
CategoryImpl rc = (CategoryImpl)(m_categories.get(key));
|
||||||
|
if (rc!=null)
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
if (catid<0)
|
||||||
|
{ // for "TOP" category, handle specially
|
||||||
|
rc = new CategoryImpl(this);
|
||||||
|
m_categories.put(key,rc);
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
} // end if
|
||||||
|
|
||||||
|
// look up the tuple for this category
|
||||||
|
CategoryTuple tuple = m_ops.getCategory(catid);
|
||||||
|
if (tuple==null)
|
||||||
|
{ // category not found!
|
||||||
|
DatabaseException de = new DatabaseException(CategoryManager.class,"CommunityMessages","cat.notfound");
|
||||||
|
de.setParameter(0,String.valueOf(catid));
|
||||||
|
throw de;
|
||||||
|
|
||||||
|
} // end if
|
||||||
|
|
||||||
|
if (tuple.getParentCategoryID()<0)
|
||||||
|
rc = new CategoryImpl(this,tuple.getCategoryID(),tuple.getSymlink(),tuple.getName());
|
||||||
|
else // recurse to look up the parent, and so on
|
||||||
|
rc = new CategoryImpl(lookup(tuple.getParentCategoryID()),tuple.getCategoryID(),tuple.getSymlink(),
|
||||||
|
tuple.getName());
|
||||||
|
m_categories.put(key,rc);
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
} // end lookup
|
||||||
|
|
||||||
|
List getCategorySublist(int parentid) throws DatabaseException
|
||||||
|
{
|
||||||
|
return convertList(m_ops.getCategoriesList(parentid));
|
||||||
|
|
||||||
|
} // end getCategorySublist
|
||||||
|
|
||||||
|
synchronized VeniceCategory canonicalize(CategoryImpl obj)
|
||||||
|
{
|
||||||
|
Integer key = new Integer(obj.getCategoryID());
|
||||||
|
VeniceCategory rc = (VeniceCategory)(m_categories.get(key));
|
||||||
|
if (rc==null)
|
||||||
|
{ // it wasn't in our refmap - it is now!
|
||||||
|
m_categories.put(key,obj);
|
||||||
|
rc = obj;
|
||||||
|
|
||||||
|
} // end if
|
||||||
|
else // dispose of the unneeded second copy
|
||||||
|
obj.dispose();
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
} // end canonicalize
|
||||||
|
|
||||||
|
} // end class CategoryManager
|
|
@ -0,0 +1,65 @@
|
||||||
|
/*
|
||||||
|
* 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 <http://www.mozilla.org/MPL/>.
|
||||||
|
*
|
||||||
|
* 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 <erbo@silcom.com>,
|
||||||
|
* 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.*;
|
||||||
|
import com.silverwrist.dynamo.db.OpsBase;
|
||||||
|
import com.silverwrist.dynamo.except.*;
|
||||||
|
import com.silverwrist.dynamo.iface.*;
|
||||||
|
import com.silverwrist.venice.SearchMode;
|
||||||
|
|
||||||
|
abstract class CategoryOps extends OpsBase
|
||||||
|
{
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Constructor
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
protected CategoryOps(DBConnectionPool pool)
|
||||||
|
{
|
||||||
|
super(pool);
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Abstract operations
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
abstract boolean verifyCategoryID(int catid) throws DatabaseException;
|
||||||
|
|
||||||
|
abstract List getCategoriesList(int parent) throws DatabaseException;
|
||||||
|
|
||||||
|
abstract CategoryTuple getCategory(int catid) throws DatabaseException;
|
||||||
|
|
||||||
|
abstract List search(SearchMode mode, String term, int offset, int count) throws DatabaseException;
|
||||||
|
|
||||||
|
abstract int getSearchCount(SearchMode mode, String term) throws DatabaseException;
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* External static operations
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
static CategoryOps get(DBConnectionPool pool) throws ConfigException
|
||||||
|
{
|
||||||
|
return (CategoryOps)get(pool,CategoryOps.class.getClassLoader(),CategoryOps.class.getName() + "_","CategoryOps");
|
||||||
|
|
||||||
|
} // end get
|
||||||
|
|
||||||
|
} // end class CategoryOps
|
|
@ -0,0 +1,242 @@
|
||||||
|
/*
|
||||||
|
* 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 <http://www.mozilla.org/MPL/>.
|
||||||
|
*
|
||||||
|
* 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 <erbo@silcom.com>,
|
||||||
|
* 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.sql.*;
|
||||||
|
import java.util.*;
|
||||||
|
import com.silverwrist.util.*;
|
||||||
|
import com.silverwrist.dynamo.except.*;
|
||||||
|
import com.silverwrist.dynamo.iface.*;
|
||||||
|
import com.silverwrist.venice.SearchMode;
|
||||||
|
|
||||||
|
public class CategoryOps_mysql extends CategoryOps
|
||||||
|
{
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Attributes
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private DBUtilities m_utils;
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Constructor
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
public CategoryOps_mysql(DBConnectionPool pool)
|
||||||
|
{
|
||||||
|
super(pool);
|
||||||
|
m_utils = (DBUtilities)(pool.queryService(DBUtilities.class));
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Abstract implementations from class CategoryOps
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
boolean verifyCategoryID(int catid) throws DatabaseException
|
||||||
|
{
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try
|
||||||
|
{ // get a connection
|
||||||
|
conn = getConnection();
|
||||||
|
|
||||||
|
// prepare and execute the statement
|
||||||
|
stmt = conn.prepareStatement("SELECT catid FROM refcategory WHERE catid = ? AND dontuse = 0;");
|
||||||
|
stmt.setInt(1,catid);
|
||||||
|
rs = stmt.executeQuery();
|
||||||
|
return rs.next();
|
||||||
|
|
||||||
|
} // end try
|
||||||
|
catch (SQLException e)
|
||||||
|
{ // translate to a general DatabaseException
|
||||||
|
throw generalException(e);
|
||||||
|
|
||||||
|
} // end catch
|
||||||
|
finally
|
||||||
|
{ // shut everything down
|
||||||
|
SQLUtils.shutdown(rs);
|
||||||
|
SQLUtils.shutdown(stmt);
|
||||||
|
SQLUtils.shutdown(conn);
|
||||||
|
|
||||||
|
} // end finally
|
||||||
|
|
||||||
|
} // end verifyCategoryID
|
||||||
|
|
||||||
|
List getCategoriesList(int parent) throws DatabaseException
|
||||||
|
{
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try
|
||||||
|
{ // get a connection
|
||||||
|
conn = getConnection();
|
||||||
|
|
||||||
|
// create and execute the statement
|
||||||
|
stmt = conn.prepareStatement("SELECT catid, symlink, name FROM refcategory WHERE parent = ? AND dontuse = 0 "
|
||||||
|
+ "ORDER BY name;");
|
||||||
|
stmt.setInt(1,parent);
|
||||||
|
rs = stmt.executeQuery();
|
||||||
|
|
||||||
|
// create the return list of CategoryTuple values
|
||||||
|
ArrayList rc = new ArrayList();
|
||||||
|
while (rs.next())
|
||||||
|
rc.add(new CategoryTuple(rs.getInt(1),parent,rs.getInt(2),rs.getString(3)));
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
} // end try
|
||||||
|
catch (SQLException e)
|
||||||
|
{ // translate to a general DatabaseException
|
||||||
|
throw generalException(e);
|
||||||
|
|
||||||
|
} // end catch
|
||||||
|
finally
|
||||||
|
{ // shut everything down
|
||||||
|
SQLUtils.shutdown(rs);
|
||||||
|
SQLUtils.shutdown(stmt);
|
||||||
|
SQLUtils.shutdown(conn);
|
||||||
|
|
||||||
|
} // end finally
|
||||||
|
|
||||||
|
} // end getCategoriesList
|
||||||
|
|
||||||
|
CategoryTuple getCategory(int catid) throws DatabaseException
|
||||||
|
{
|
||||||
|
Connection conn = null;
|
||||||
|
PreparedStatement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try
|
||||||
|
{ // get a connection
|
||||||
|
conn = getConnection();
|
||||||
|
|
||||||
|
// create and execute the statement
|
||||||
|
stmt = conn.prepareStatement("SELECT parent, symlink, name FROM refcategory WHERE catid = ? AND dontuse = 0;");
|
||||||
|
stmt.setInt(1,catid);
|
||||||
|
rs = stmt.executeQuery();
|
||||||
|
|
||||||
|
if (rs.next())
|
||||||
|
return new CategoryTuple(catid,rs.getInt(1),rs.getInt(2),rs.getString(3));
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
|
||||||
|
} // end try
|
||||||
|
catch (SQLException e)
|
||||||
|
{ // translate to a general DatabaseException
|
||||||
|
throw generalException(e);
|
||||||
|
|
||||||
|
} // end catch
|
||||||
|
finally
|
||||||
|
{ // shut everything down
|
||||||
|
SQLUtils.shutdown(rs);
|
||||||
|
SQLUtils.shutdown(stmt);
|
||||||
|
SQLUtils.shutdown(conn);
|
||||||
|
|
||||||
|
} // end finally
|
||||||
|
|
||||||
|
} // end getCategory
|
||||||
|
|
||||||
|
List search(SearchMode mode, String term, int offset, int count) throws DatabaseException
|
||||||
|
{
|
||||||
|
Connection conn = null;
|
||||||
|
Statement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try
|
||||||
|
{ // get a connection
|
||||||
|
conn = getConnection();
|
||||||
|
|
||||||
|
// build the SQL statement as a string
|
||||||
|
StringBuffer sql = new StringBuffer("SELECT catid, parent, symlink, name FROM refcategory WHERE name ");
|
||||||
|
if (SearchMode.PREFIX.equals(mode))
|
||||||
|
sql.append("LIKE '").append(m_utils.encodeStringWildcards(term)).append("%'");
|
||||||
|
else if (SearchMode.SUBSTRING.equals(mode))
|
||||||
|
sql.append("LIKE '%").append(m_utils.encodeStringWildcards(term)).append("%'");
|
||||||
|
else if (SearchMode.REGEXP.equals(mode))
|
||||||
|
sql.append("REGEXP '").append(m_utils.encodeString(term)).append('\'');
|
||||||
|
sql.append(" AND dontuse = 0 ORDER BY parent, name LIMIT ").append(offset).append(", ").append(count+1);
|
||||||
|
sql.append(';');
|
||||||
|
|
||||||
|
// execute the operation!
|
||||||
|
stmt = conn.createStatement();
|
||||||
|
rs = stmt.executeQuery(sql.toString());
|
||||||
|
|
||||||
|
// create the return list of CategoryTuple values
|
||||||
|
ArrayList rc = new ArrayList(count+1);
|
||||||
|
while (rs.next())
|
||||||
|
rc.add(new CategoryTuple(rs.getInt(1),rs.getInt(2),rs.getInt(3),rs.getString(4)));
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
} // end try
|
||||||
|
catch (SQLException e)
|
||||||
|
{ // translate to a general DatabaseException
|
||||||
|
throw generalException(e);
|
||||||
|
|
||||||
|
} // end catch
|
||||||
|
finally
|
||||||
|
{ // shut everything down
|
||||||
|
SQLUtils.shutdown(rs);
|
||||||
|
SQLUtils.shutdown(stmt);
|
||||||
|
SQLUtils.shutdown(conn);
|
||||||
|
|
||||||
|
} // end finally
|
||||||
|
|
||||||
|
} // end searchForCategories
|
||||||
|
|
||||||
|
int getSearchCount(SearchMode mode, String term) throws DatabaseException
|
||||||
|
{
|
||||||
|
Connection conn = null;
|
||||||
|
Statement stmt = null;
|
||||||
|
ResultSet rs = null;
|
||||||
|
try
|
||||||
|
{ // get a connection
|
||||||
|
conn = getConnection();
|
||||||
|
|
||||||
|
// build the SQL statement as a string
|
||||||
|
StringBuffer sql = new StringBuffer("SELECT COUNT(*) FROM refcategory WHERE name ");
|
||||||
|
if (SearchMode.PREFIX.equals(mode))
|
||||||
|
sql.append("LIKE '").append(m_utils.encodeStringWildcards(term)).append("%'");
|
||||||
|
else if (SearchMode.SUBSTRING.equals(mode))
|
||||||
|
sql.append("LIKE '%").append(m_utils.encodeStringWildcards(term)).append("%'");
|
||||||
|
else if (SearchMode.REGEXP.equals(mode))
|
||||||
|
sql.append("REGEXP '").append(m_utils.encodeString(term)).append('\'');
|
||||||
|
sql.append(" AND dontuse = 0;");
|
||||||
|
|
||||||
|
// execute the operation!
|
||||||
|
stmt = conn.createStatement();
|
||||||
|
rs = stmt.executeQuery(sql.toString());
|
||||||
|
return SQLUtils.getReturnCountInt(rs,1);
|
||||||
|
|
||||||
|
} // end try
|
||||||
|
catch (SQLException e)
|
||||||
|
{ // translate to a general DatabaseException
|
||||||
|
throw generalException(e);
|
||||||
|
|
||||||
|
} // end catch
|
||||||
|
finally
|
||||||
|
{ // shut everything down
|
||||||
|
SQLUtils.shutdown(rs);
|
||||||
|
SQLUtils.shutdown(stmt);
|
||||||
|
SQLUtils.shutdown(conn);
|
||||||
|
|
||||||
|
} // end finally
|
||||||
|
|
||||||
|
} // end getSearchCount
|
||||||
|
|
||||||
|
} // end class CategoryOps_mysql
|
|
@ -0,0 +1,37 @@
|
||||||
|
/*
|
||||||
|
* 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 <http://www.mozilla.org/MPL/>.
|
||||||
|
*
|
||||||
|
* 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 <erbo@silcom.com>,
|
||||||
|
* 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.venice.SearchMode;
|
||||||
|
import com.silverwrist.venice.iface.VeniceCategory;
|
||||||
|
|
||||||
|
public interface CategoryService
|
||||||
|
{
|
||||||
|
public boolean isValidCategoryID(int catid);
|
||||||
|
|
||||||
|
public List getRootCategoryList() throws DatabaseException;
|
||||||
|
|
||||||
|
public VeniceCategory getCategory(int catid) throws DatabaseException;
|
||||||
|
|
||||||
|
public List searchForCategories(SearchMode mode, String term, int offset, int count) throws DatabaseException;
|
||||||
|
|
||||||
|
public int getSearchCategoryCount(SearchMode mode, String term) throws DatabaseException;
|
||||||
|
|
||||||
|
} // end interface CategoryService
|
|
@ -0,0 +1,75 @@
|
||||||
|
/*
|
||||||
|
* 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 <http://www.mozilla.org/MPL/>.
|
||||||
|
*
|
||||||
|
* 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 <erbo@silcom.com>,
|
||||||
|
* 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;
|
||||||
|
|
||||||
|
class CategoryTuple
|
||||||
|
{
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Attributes
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
private int m_catid;
|
||||||
|
private int m_parent;
|
||||||
|
private int m_symlink;
|
||||||
|
private String m_name;
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Constructor
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
CategoryTuple(int catid, int parent, int symlink, String name)
|
||||||
|
{
|
||||||
|
m_catid = catid;
|
||||||
|
m_parent = parent;
|
||||||
|
m_symlink = symlink;
|
||||||
|
m_name = name;
|
||||||
|
|
||||||
|
} // end constructor
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------
|
||||||
|
* Public getters
|
||||||
|
*--------------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
int getCategoryID()
|
||||||
|
{
|
||||||
|
return m_catid;
|
||||||
|
|
||||||
|
} // end getCategoryID
|
||||||
|
|
||||||
|
int getParentCategoryID()
|
||||||
|
{
|
||||||
|
return m_parent;
|
||||||
|
|
||||||
|
} // end getParentCategoryID
|
||||||
|
|
||||||
|
int getSymlink()
|
||||||
|
{
|
||||||
|
return m_symlink;
|
||||||
|
|
||||||
|
} // end getSymLink
|
||||||
|
|
||||||
|
String getName()
|
||||||
|
{
|
||||||
|
return m_name;
|
||||||
|
|
||||||
|
} // end getName
|
||||||
|
|
||||||
|
} // end class CategoryTuple
|
|
@ -0,0 +1,18 @@
|
||||||
|
# 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 <http://www.mozilla.org/MPL/>.
|
||||||
|
#
|
||||||
|
# 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 <erbo@silcom.com>,
|
||||||
|
# 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):
|
||||||
|
# ---------------------------------------------------------------------------------
|
||||||
|
# This file has been localized for the en_US locale
|
||||||
|
cat.notfound=The category with ID#{0} does not exist in the database.
|
|
@ -0,0 +1,51 @@
|
||||||
|
/*
|
||||||
|
* 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 <http://www.mozilla.org/MPL/>.
|
||||||
|
*
|
||||||
|
* 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 <erbo@silcom.com>,
|
||||||
|
* 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.util.List;
|
||||||
|
import com.silverwrist.dynamo.except.DatabaseException;
|
||||||
|
|
||||||
|
public interface VeniceCategory
|
||||||
|
{
|
||||||
|
public int getCategoryID();
|
||||||
|
|
||||||
|
public int getNumLevels();
|
||||||
|
|
||||||
|
public int getIDAtLevel(int level);
|
||||||
|
|
||||||
|
public String getTitleAtLevel(int level);
|
||||||
|
|
||||||
|
public List getSubCategories() throws DatabaseException;
|
||||||
|
|
||||||
|
public VeniceCategory getSuperCategory(int levels);
|
||||||
|
|
||||||
|
public VeniceCategory getParentCategory();
|
||||||
|
|
||||||
|
public int getLinkedCategoryID();
|
||||||
|
|
||||||
|
public boolean isSymbolicLink();
|
||||||
|
|
||||||
|
public VeniceCategory getLinkedCategory() throws DatabaseException;
|
||||||
|
|
||||||
|
public boolean equals(Object obj);
|
||||||
|
|
||||||
|
public int hashCode();
|
||||||
|
|
||||||
|
public String toString();
|
||||||
|
|
||||||
|
} // end interface VeniceCategory
|
|
@ -20,6 +20,7 @@ package com.silverwrist.venice.script;
|
||||||
import com.silverwrist.dynamo.Namespaces;
|
import com.silverwrist.dynamo.Namespaces;
|
||||||
import com.silverwrist.dynamo.except.*;
|
import com.silverwrist.dynamo.except.*;
|
||||||
import com.silverwrist.dynamo.iface.*;
|
import com.silverwrist.dynamo.iface.*;
|
||||||
|
import com.silverwrist.venice.community.CategoryService;
|
||||||
import com.silverwrist.venice.iface.*;
|
import com.silverwrist.venice.iface.*;
|
||||||
|
|
||||||
public class LibraryVeniceCast
|
public class LibraryVeniceCast
|
||||||
|
@ -86,6 +87,12 @@ public class LibraryVeniceCast
|
||||||
|
|
||||||
} // end queryButtonProvider
|
} // end queryButtonProvider
|
||||||
|
|
||||||
|
public final CategoryService queryCategoryService(Object obj)
|
||||||
|
{
|
||||||
|
return (CategoryService)query(obj,CategoryService.class);
|
||||||
|
|
||||||
|
} // end queryCategoryService
|
||||||
|
|
||||||
public final ContentBlockProvider queryContentBlockProvider(Object obj)
|
public final ContentBlockProvider queryContentBlockProvider(Object obj)
|
||||||
{
|
{
|
||||||
return (ContentBlockProvider)query(obj,ContentBlockProvider.class);
|
return (ContentBlockProvider)query(obj,ContentBlockProvider.class);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user