Klasse TextPage eleminiert. Alle Funktionen in GenericArticle übernommen. Alle von TextPage abgeleiteten Klassen werden nun von GenericArticle abgeleitet. Alle Verwendungen von TextPage wurden aud GenericArticle geändert.

git-svn-id: https://svn.libreccm.org/ccm/trunk@672 8810af33-2d31-482b-a856-94f89814c4df
master
quasi 2011-01-08 11:38:10 +00:00
parent a76bf6287f
commit ba902a0081
20 changed files with 143 additions and 142 deletions

View File

@ -23,7 +23,7 @@ import com.arsdigita.cms.*;
// object type to hold extended attributes of agenda content type
object type Agenda extends TextPage {
object type Agenda extends GenericArticle {
// The date and time for the agenda
Date [0..1] agendaDate = ct_agendas.agenda_date TIMESTAMP;
// The location for the agenda

View File

@ -6,7 +6,7 @@
-->
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.Agenda" extends="com.arsdigita.cms.TextPage" traversalClass="com.arsdigita.cms.contenttypes.ContentItemTraversalAdapter">
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.Agenda" extends="com.arsdigita.cms.GenericArticle" traversalClass="com.arsdigita.cms.contenttypes.ContentItemTraversalAdapter">
<xrd:formatter property="/object/creationDate"
class="com.arsdigita.xml.formatters.DateFormatter"/>

View File

@ -18,10 +18,8 @@
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.TextAsset;
import com.arsdigita.cms.TextPage;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
@ -52,7 +50,7 @@ import java.util.Date;
*
* @version $Revision: #6 $ $Date: 2004/08/17 $
**/
public class Agenda extends TextPage {
public class Agenda extends GenericArticle {
/** PDL property name for summary */
public static final String SUMMARY = "summary";
@ -68,12 +66,9 @@ public class Agenda extends TextPage {
public static final String CONTACT_INFO = "contactInfo";
/** PDL property name for creation date */
public static final String CREATION_DATE = "creationDate";
/** Data object type for this domain object */
public static final String BASE_DATA_OBJECT_TYPE
= "com.arsdigita.cms.contenttypes.Agenda";
public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.Agenda";
/** Data object type for this domain object (for CMS compatibility) */
private static final Logger s_log = Logger.getLogger(Logger.class);
/**
@ -147,9 +142,9 @@ public class Agenda extends TextPage {
public String getDisplayAgendaDate() {
Date d = getAgendaDate();
return (d != null) ? DateFormat.getDateInstance(DateFormat.LONG)
.format(d) : null;
return (d != null) ? DateFormat.getDateInstance(DateFormat.LONG).format(d) : null;
}
public void setAgendaDate(Date agendaDate) {
set(AGENDA_DATE, agendaDate);
}
@ -201,7 +196,6 @@ public class Agenda extends TextPage {
public void setCreationDate(Date creationDate) {
set(CREATION_DATE, creationDate);
}
// Search stuff to allow the content type to be searchable
public static final int SUMMARY_LENGTH = 200;
@ -216,5 +210,4 @@ public class Agenda extends TextPage {
return "";
}
}
}

View File

@ -16,13 +16,6 @@
<ctd:include href="/WEB-INF/content-types/edit-body-text-step.xml"/>
<ctd:include href="/WEB-INF/content-types/assign-categories-step.xml"/>
<ctd:authoring-step label="Image" description="Image"
labelKey="article.authoring.image.title"
labelBundle="com.arsdigita.cms.contenttypes.ArticleResources"
descriptionKey="article.authoring.image.description"
descriptionBundle="com.arsdigita.cms.contenttypes.ArticleResources"
component="com.arsdigita.cms.ui.authoring.ArticleImage"/>
</ctd:authoring-kit>
</ctd:content-type>
</ctd:content-types>

View File

@ -23,7 +23,7 @@ import com.arsdigita.cms.*;
// object type to hold extended attributes of event content type
object type Event extends TextPage {
object type Event extends GenericArticle {
// The starting date and time of the event, so the events content type
// can be used by calendar
Date [0..1] startDate = ct_events.start_date DATE;

View File

@ -7,7 +7,7 @@
<!-- First off the adapters for ContentItemPanel -->
<xrd:context name="com.arsdigita.cms.dispatcher.SimpleXMLGenerator">
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.Event" extends="com.arsdigita.cms.TextPage" traversalClass="com.arsdigita.cms.contenttypes.ContentItemTraversalAdapter">
<xrd:adapter objectType="com.arsdigita.cms.contenttypes.Event" extends="com.arsdigita.cms.GenericArticle" traversalClass="com.arsdigita.cms.contenttypes.ContentItemTraversalAdapter">
<xrd:formatter property="/object/startDate"
class="com.arsdigita.xml.formatters.DateFormatter"/>
<xrd:formatter property="/object/endDate"

View File

@ -18,16 +18,13 @@
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.TextPage;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.DataQuery;
import com.arsdigita.persistence.OID;
import com.arsdigita.persistence.SessionManager;
import com.arsdigita.util.Assert;
import org.apache.log4j.Logger;
import java.math.BigDecimal;
import java.text.DateFormat;
@ -40,7 +37,7 @@ import java.util.Date;
* It represents an event object and provides methods for creating new event
* objects, retrieving existing objects from the persistent storage and
* retrieving and setting is properties.</p>
* <p>This class extends {@link com.arsdigita.cms.TextPage content page} and
* <p>This class extends {@link com.arsdigita.cms.contenttypes.GenericArticle content page} and
* inherits title, name (filename), body (TextAsset), and metadata. It adds
* extended attributes specific for an event:</p>
* <dl>
@ -70,21 +67,17 @@ import java.util.Date;
*
* @version $Revision: #6 $ $Date: 2004/08/17 $
**/
public class Event extends TextPage {
public class Event extends GenericArticle {
private final static org.apache.log4j.Logger s_log =
org.apache.log4j.Logger.getLogger(Event.class);
/** PDL property name for lead (summary) */
public static final String LEAD = "lead";
/** PDL property name for event date */
public static final String START_DATE = "startDate";
public static final String END_DATE = "endDate";
public static final String START_TIME = "startTime";
public static final String END_TIME = "endTime";
public static final String EVENT_DATE = "eventDate";
/** PDL property name for location */
public static final String LOCATION = "location";
@ -96,19 +89,16 @@ public class Event extends TextPage {
public static final String MAP_LINK = "mapLink";
/** PDL property name for cost */
public static final String COST = "cost";
public static final String RECENT_EVENT = "com.arsdigita.cms.contenttypes.RecentEvent";
/** Data object type for this domain object */
public static final String BASE_DATA_OBJECT_TYPE
= "com.arsdigita.cms.contenttypes.Event";
public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.Event";
private static final EventConfig s_config = new EventConfig();
static {
s_config.load();
}
public static final EventConfig getConfig()
{
public static final EventConfig getConfig() {
return s_config;
}
@ -177,14 +167,11 @@ public class Event extends TextPage {
}
public String formatDate(Date date) {
return (date != null) ? DateFormat.getDateInstance(DateFormat.LONG)
.format(date) : null;
return (date != null) ? DateFormat.getDateInstance(DateFormat.LONG).format(date) : null;
}
public String formatTime(Date time) {
return (time != null) ? DateFormat.getTimeInstance(DateFormat.SHORT)
.format(time) : null;
return (time != null) ? DateFormat.getTimeInstance(DateFormat.SHORT).format(time) : null;
}
/* accessors *****************************************************/
@ -242,7 +229,6 @@ public class Event extends TextPage {
return (String) get(EVENT_DATE);
}
public void setEventDate(String eventDate) {
set(EVENT_DATE, eventDate);
}
@ -294,9 +280,9 @@ public class Event extends TextPage {
public void setCost(String cost) {
set(COST, cost);
}
// Search stuff to allow the content type to be searchable
public static final int SUMMARY_LENGTH = 200;
public String getSearchSummary() {
return com.arsdigita.util.StringUtils.truncateString(getLead(),
SUMMARY_LENGTH,

View File

@ -22,7 +22,7 @@ model com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.*;
// object type to hold extended attributes of legal notice content type
object type LegalNotice extends TextPage {
object type LegalNotice extends GenericArticle {
// The government issued UID for the legal notice
String [0..1] governmentUID = ct_legal_notices.government_uid VARCHAR(100);

View File

@ -18,10 +18,8 @@
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.TextAsset;
import com.arsdigita.cms.TextPage;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
@ -35,16 +33,14 @@ import java.math.BigDecimal;
*
* @version $Revision: #6 $ $Date: 2004/08/17 $
**/
public class LegalNotice extends TextPage {
public class LegalNotice extends GenericArticle {
/** PDL property name for government UID */
public static final String GOVERNMENT_UID = "governmentUID";
/** Data object type for this domain object */
public static final String BASE_DATA_OBJECT_TYPE
= "com.arsdigita.cms.contenttypes.LegalNotice";
public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.LegalNotice";
private static final Logger s_log = Logger.getLogger(LegalNotice.class);
public LegalNotice() {
this(BASE_DATA_OBJECT_TYPE);
}
@ -79,7 +75,6 @@ public class LegalNotice extends TextPage {
public void setGovernmentUID(String governmentUID) {
set(GOVERNMENT_UID, governmentUID);
}
// Search stuff to allow the content type to be searchable
public static final int SUMMARY_LENGTH = 200;
@ -94,5 +89,4 @@ public class LegalNotice extends TextPage {
return "";
}
}
}

View File

@ -23,7 +23,7 @@ import com.arsdigita.cms.*;
// object type to hold extended attributes of minutes content type
object type Minutes extends TextPage {
object type Minutes extends GenericArticle {
// The minute number for the minutes
String [0..1] minuteNumber = ct_minutes.minute_number VARCHAR(100);
// The description of the minutes

View File

@ -18,9 +18,7 @@
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.TextPage;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
@ -34,11 +32,10 @@ import java.math.BigDecimal;
*
* @version $Revision: #6 $ $Date: 2004/08/17 $
**/
public class Minutes extends TextPage {
public class Minutes extends GenericArticle {
private static Logger s_log =
Logger.getLogger(Minutes.class);
/** PDL property name for attendees */
public static final String ATTENDEES = "attendees";
/** PDL property name for description */
@ -49,10 +46,8 @@ public class Minutes extends TextPage {
public static final String MINUTE_NUMBER = "minuteNumber";
/** PDL property name for description */
public static final String DESCRIPTION_OF_MINUTES = "descriptionOfMinutes";
/** Data object type for this domain object */
public static final String BASE_DATA_OBJECT_TYPE
= "com.arsdigita.cms.contenttypes.Minutes";
public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.Minutes";
public Minutes() {
this(BASE_DATA_OBJECT_TYPE);
@ -74,7 +69,6 @@ public class Minutes extends TextPage {
super(type);
}
public void beforeSave() {
super.beforeSave();
@ -121,12 +115,11 @@ public class Minutes extends TextPage {
public void setMinuteNumber(String minuteNumber) {
set(MINUTE_NUMBER, minuteNumber);
}
public static final int SUMMARY_LENGTH = 200;
public String getSearchSummary() {
return com.arsdigita.util.StringUtils.truncateString(getDescription(),
SUMMARY_LENGTH,
true);
}
}

View File

@ -25,7 +25,7 @@ import com.arsdigita.cms.*;
object type PressRelease extends TextPage {
object type PressRelease extends GenericArticle {
// contact information text for the press release
String [0..1] contactInfo = ct_press_releases.contact_info VARCHAR(1000);
// the text summary for the press release

View File

@ -18,9 +18,7 @@
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.ContentType;
import com.arsdigita.cms.TextPage;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
@ -34,26 +32,23 @@ import java.math.BigDecimal;
* reference purposes. Reference code is an arbitrary string that is used for
* out-of-system reference. The type inherits name (filename), title, body
* (TextAsset), and metadata from
* <code>com.arsdigita.aplaws.cms.TextPage</code>, and also provides the
* <code>com.arsdigita.cms.contenttypes.Genericrticle</code>, and also provides the
* capability to associate contact information with this press release.
*
* @version $Revision: #6 $ $Date: 2004/08/17 $
**/
public class PressRelease extends TextPage {
public class PressRelease extends GenericArticle {
// is the CardBin sort of contact support needed here?
// implements ContactSupport {
/** PDL property name for contact info */
public static final String CONTACT_INFO = "contactInfo";
/** PDL property name for summary */
public static final String SUMMARY = "summary";
/** PDL property name for reference code */
public static final String REFERENCE_CODE = "referenceCode";
/** Data object type for this domain object */
public static final String BASE_DATA_OBJECT_TYPE
= "com.arsdigita.cms.contenttypes.PressRelease";
public static final String BASE_DATA_OBJECT_TYPE = "com.arsdigita.cms.contenttypes.PressRelease";
public PressRelease() {
this(BASE_DATA_OBJECT_TYPE);
@ -105,12 +100,11 @@ public class PressRelease extends TextPage {
public void setReferenceCode(String refCode) {
set(REFERENCE_CODE, refCode);
}
public static final int SUMMARY_LENGTH = 200;
public String getSearchSummary() {
return com.arsdigita.util.StringUtils.truncateString(getSummary(),
SUMMARY_LENGTH,
true);
}
}

View File

@ -22,10 +22,11 @@ model com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.*;
import com.arsdigita.kernel.*;
object type GenericArticle extends TextPage {
object type GenericArticle extends ContentPage {
component TextAsset[0..1] textAsset = join cms_text_pages.text_id to cms_text.text_id;
reference key (cms_articles.article_id);
}
//association {

View File

@ -18,7 +18,8 @@
*/
package com.arsdigita.cms.contenttypes;
import com.arsdigita.cms.TextPage;
import com.arsdigita.cms.ContentPage;
import com.arsdigita.cms.TextAsset;
import com.arsdigita.domain.DataObjectNotFoundException;
import com.arsdigita.persistence.DataObject;
import com.arsdigita.persistence.OID;
@ -32,11 +33,12 @@ import java.math.BigDecimal;
* @version $Revision: #28 $ $Date: 2004/08/17 $
* @version $Id: Article.java 2070 2010-01-28 08:47:41Z pboy $
*/
public class GenericArticle extends TextPage {
public class GenericArticle extends ContentPage {
public static final String BASE_DATA_OBJECT_TYPE =
"com.arsdigita.cms.contenttypes.GenericArticle";
public static final String TEXT_ASSET = "textAsset";
protected static final int SUMMARY_SIZE = 1024;
private static org.apache.log4j.Logger s_log =
org.apache.log4j.Logger.getLogger(GenericArticle.class);
@ -88,4 +90,41 @@ public class GenericArticle extends TextPage {
public String getBaseDataObjectType() {
return BASE_DATA_OBJECT_TYPE;
}
/**
* Return the text asset for this <code>TextPage</code>. Could return
* null if there is no text body actually associated with the page
*/
public TextAsset getTextAsset() {
DataObject text = (DataObject) get(TEXT_ASSET);
if (text == null) {
return null;
} else {
return new TextAsset(text);
}
}
/**
* Pass in a null value to remove the text of this item.
* Explicitly call text.delete() to remove the text from the database
*/
public void setTextAsset(TextAsset text) {
setAssociation(TEXT_ASSET, text);
}
/**
* Return a short summary of the text body for search.
* This method is WRONG, because the text body could actually
* be extremely large, and doing substring on it is NOT safe
*/
public String getSearchSummary() {
TextAsset a = getTextAsset();
if (a == null) {
return "";
}
return com.arsdigita.util.StringUtils.truncateString(a.getText(),
SUMMARY_SIZE,
true);
}
}

View File

@ -20,19 +20,20 @@ package com.arsdigita.cms.installer.xml;
import com.arsdigita.cms.ContentSection;
import com.arsdigita.cms.TextAsset;
import com.arsdigita.cms.TextPage;
import com.arsdigita.cms.contenttypes.GenericArticle;
import org.apache.log4j.Logger;
/**
* TextPageHelper
* GenericArticleHelper
*
* @author <a href="mailto:jorris@redhat.com">Jon Orris</a>
*
*/
public class TextPageHelper extends ContentPageHelper {
public class GenericArticleHelper extends ContentPageHelper {
private static final Logger s_log = Logger.getLogger(TextPageHelper.class);
public TextPageHelper(ContentSection section) {
private static final Logger s_log = Logger.getLogger(GenericArticleHelper.class);
public GenericArticleHelper(ContentSection section) {
super(section);
}
@ -41,7 +42,7 @@ public class TextPageHelper extends ContentPageHelper {
TextAsset asset = new TextAsset();
asset.setText(body);
TextPage page = (TextPage) m_item;
GenericArticle page = (GenericArticle) m_item;
page.setTextAsset(asset);
asset.setParent(page);
asset.setName(page.getName() + "_text_" + page.getID());

View File

@ -28,7 +28,7 @@ import com.arsdigita.bebop.form.Option;
import com.arsdigita.bebop.form.SingleSelect;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.TextAsset;
import com.arsdigita.cms.TextPage;
import com.arsdigita.cms.contenttypes.GenericArticle;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.cms.util.GlobalizationUtil;
import com.arsdigita.domain.DomainObject;
@ -44,15 +44,15 @@ import com.arsdigita.util.Assert;
* this class.
*
* @author Stanislav Freidin (sfreidin@arsdigita.com)
* @version $Id: TextPageBody.java 1949 2009-06-25 08:30:50Z terry $
* @version $Id: GenericArticleBody.java 1949 2009-06-25 08:30:50Z terry $
*/
public class TextPageBody extends TextAssetBody {
public class GenericArticleBody extends TextAssetBody {
private AuthoringKitWizard m_parent;
private ItemSelectionModel m_itemModel;
/**
* Construct a new TextPageBody component
* Construct a new GenericArticleBody component
*
* @param itemModel The {@link ItemSelectionModel} which will
* be responsible for loading the current item
@ -61,7 +61,7 @@ public class TextPageBody extends TextAssetBody {
* may use the wizard's methods, such as stepForward and stepBack,
* in its process listener.
*/
public TextPageBody(ItemSelectionModel itemModel, AuthoringKitWizard parent) {
public GenericArticleBody(ItemSelectionModel itemModel, AuthoringKitWizard parent) {
super(new ItemAssetModel(itemModel));
m_itemModel = itemModel;
m_parent = parent;
@ -87,8 +87,9 @@ public class TextPageBody extends TextAssetBody {
/**
* Adds the options for the mime type select widget of
* <code>TextPageForm</code> and sets the default mime type.
* <code>GenericArticleForm</code> and sets the default mime type.
**/
@Override
protected void setMimeTypeOptions(SingleSelect mimeSelect) {
mimeSelect.addOption(new Option("text/html", "HTML Text"));
mimeSelect.setOptionSelected("text/html");
@ -101,7 +102,7 @@ public class TextPageBody extends TextAssetBody {
* @return a valid TextAsset
*/
protected TextAsset createTextAsset(PageState s) {
TextPage item = getTextPage(s);
GenericArticle item = getGenericArticle(s);
TextAsset t = new TextAsset();
t.setName(item.getName() + "_text_" + item.getID());
// no need - cg. Text doesn't need a security context,
@ -118,7 +119,7 @@ public class TextPageBody extends TextAssetBody {
* @param a the new <code>TextAsset</code>
*/
protected void updateTextAsset(PageState s, TextAsset a) {
TextPage t = getTextPage(s);
GenericArticle t = getGenericArticle(s);
Assert.exists(t);
// no need - cg. Text doesn't need a security context,
// and ownership of text is recorded in text_pages
@ -130,10 +131,10 @@ public class TextPageBody extends TextAssetBody {
}
/**
* Get the current TextPage
* Get the current GenericArticle
*/
protected TextPage getTextPage(PageState s) {
return (TextPage)m_itemModel.getSelectedObject(s);
protected GenericArticle getGenericArticle(PageState s) {
return (GenericArticle)m_itemModel.getSelectedObject(s);
}
/**
@ -148,8 +149,9 @@ public class TextPageBody extends TextAssetBody {
super(m);
m_asset = new RequestLocal() {
@Override
protected Object initialValue(PageState s) {
TextPage t = (TextPage)
GenericArticle t = (GenericArticle)
((ItemSelectionModel)getSingleSelectionModel())
.getSelectedObject(s);
Assert.exists(t);
@ -158,23 +160,28 @@ public class TextPageBody extends TextAssetBody {
};
}
@Override
public Object getSelectedKey(PageState s) {
TextAsset a = (TextAsset)getSelectedObject(s);
return (a == null) ? null : a.getID();
}
@Override
public DomainObject getSelectedObject(PageState s) {
return (DomainObject)m_asset.get(s);
}
@Override
public void setSelectedObject(PageState s, DomainObject o) {
m_asset.set(s, o);
}
@Override
public void setSelectedKey(PageState s, Object key) {
throw new UnsupportedOperationException( (String) GlobalizationUtil.globalize("cms.ui.authoring.not_implemented").localize());
}
@Override
public boolean isSelected(PageState s) {
return (getSelectedObject(s) != null);
}

View File

@ -33,7 +33,7 @@ import weka.core.Instance;
import weka.core.Instances;
import com.arsdigita.cms.ContentItem;
import com.arsdigita.cms.TextPage;
import com.arsdigita.cms.contenttypes.GenericArticle;
import com.arsdigita.london.terms.Domain;
import com.arsdigita.london.terms.Term;
import com.arsdigita.london.terms.indexing.Indexer;
@ -63,7 +63,7 @@ public class IndexerService {
// Extract keyphrases
StringBuffer txtStr = new StringBuffer();
txtStr.append(((TextPage) item).getTextAsset().getText());
txtStr.append(((GenericArticle) item).getTextAsset().getText());
double[] newInst = new double[2];
newInst[0] = (double) data.attribute(0).addStringValue(txtStr.toString());