Skip to content

Commit

Permalink
Added support for DB-specific "clean" URLs via frostillicus.AliasManager
Browse files Browse the repository at this point in the history
  • Loading branch information
jesse-gallagher committed Dec 21, 2012
1 parent 8040f99 commit 49dce44
Show file tree
Hide file tree
Showing 13 changed files with 435 additions and 11 deletions.
20 changes: 20 additions & 0 deletions disk-collaborationtoday/Code/Java/frostillicus/AbstractKeyMap.java
@@ -0,0 +1,20 @@
package frostillicus;

import java.util.*;

public abstract class AbstractKeyMap<K, V> implements Map<K, V> {

public boolean containsKey(Object key) { throw new UnsupportedOperationException(); }
public boolean containsValue(Object value) { throw new UnsupportedOperationException(); }

public void clear() { throw new UnsupportedOperationException(); }
public Set<java.util.Map.Entry<K, V>> entrySet() { throw new UnsupportedOperationException(); }
public boolean isEmpty() { throw new UnsupportedOperationException(); }
public Set<K> keySet() { throw new UnsupportedOperationException(); }
public V put(K key, V value) { throw new UnsupportedOperationException(); }
public void putAll(Map<? extends K, ? extends V> m) { throw new UnsupportedOperationException(); }
public V remove(Object key) { throw new UnsupportedOperationException(); }
public int size() { throw new UnsupportedOperationException(); }
public Collection<V> values() { throw new UnsupportedOperationException(); }

}
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?><note class="form" replicaid="85257AD1004C558E" version="9.0" xmlns="http://www.lotus.com/dxl">
<noteinfo noteid="2cee" sequence="3" unid="ACADEE3180A0B2F985257ADB00781EAD">
<created><datetime>20121221T165201,73-05</datetime></created>
<modified><datetime>20121221T165202,59-05</datetime></modified>
<revised><datetime>20121221T165202,57-05</datetime></revised>
<lastaccessed><datetime>20121221T165202,57-05</datetime></lastaccessed>
<addedtofile><datetime>20121221T165201,73-05</datetime></addedtofile></noteinfo>
<updatedby><name>CN=Jesse Gallagher/O=Frost</name></updatedby>
<wassignedby><name>CN=Jesse Gallagher/O=Frost</name></wassignedby>
<item name="$Flags"><text>34567Cg~[</text></item>
<item name="$TITLE"><text>frostillicus/AbstractKeyMap.java</text></item>
<item name="$DesignerVersion"><text>8.5.3</text></item>


<item name="$FileNames" sign="true"><text>frostillicus/AbstractKeyMap.java</text></item></note>
54 changes: 54 additions & 0 deletions disk-collaborationtoday/Code/Java/frostillicus/AliasManager.java
@@ -0,0 +1,54 @@
package frostillicus;

import java.util.*;
import java.io.Serializable;

import com.ibm.xsp.extlib.util.ExtLibUtil;

import lotus.domino.*;

public class AliasManager extends AbstractKeyMap<String, String> implements Serializable {
private static final long serialVersionUID = 1L;

private Map<String, String> cache = new HashMap<String, String>();

public AliasManager() throws NotesException {
this.regenerateCache();
}

public String get(Object key) {
if(!(key instanceof String)) { throw new IllegalArgumentException(); }

if(this.cache.containsKey(key)) {
return this.cache.get(key);
}
return (String)key;
}

@Override
public void clear() {
this.cache.clear();
try { this.regenerateCache(); } catch(NotesException ne) { }
}

@SuppressWarnings("unchecked")
private void regenerateCache() throws NotesException {
Database database = ExtLibUtil.getCurrentDatabase();
View aliases = database.getView("Aliases");
aliases.setAutoUpdate(false);
ViewNavigator viewNav = aliases.createViewNav();
ViewEntry entry = viewNav.getFirst();
while(entry != null) {
entry.setPreferJavaDates(true);
List<Object> columnValues = entry.getColumnValues();

this.cache.put((String)columnValues.get(0), (String)columnValues.get(1));

ViewEntry tempEntry = entry;
entry = viewNav.getNext(entry);
tempEntry.recycle();
}
viewNav.recycle();
aliases.recycle();
}
}
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?><note class="form" replicaid="85257AD1004C558E" version="9.0" xmlns="http://www.lotus.com/dxl">
<noteinfo noteid="2cea" sequence="3" unid="390868F8BB48E44585257ADB00780CC1">
<created><datetime>20121221T165115,85-05</datetime></created>
<modified><datetime>20121221T165116,26-05</datetime></modified>
<revised><datetime>20121221T165116,24-05</datetime></revised>
<lastaccessed><datetime>20121221T165116,24-05</datetime></lastaccessed>
<addedtofile><datetime>20121221T165115,85-05</datetime></addedtofile></noteinfo>
<updatedby><name>CN=Jesse Gallagher/O=Frost</name></updatedby>
<wassignedby><name>CN=Jesse Gallagher/O=Frost</name></wassignedby>
<item name="$Flags"><text>34567Cg~[</text></item>
<item name="$TITLE"><text>frostillicus/AliasManager.java</text></item>
<item name="$DesignerVersion"><text>8.5.3</text></item>


<item name="$FileNames" sign="true"><text>frostillicus/AliasManager.java</text></item></note>
10 changes: 5 additions & 5 deletions disk-collaborationtoday/CustomControls/header.xsp
Expand Up @@ -34,20 +34,20 @@
<div class="nav-collapse">
<ul class="nav">
<li class="${view.pageName=='/home.xsp' ? 'active' : ''}">
<xp:link text="Home" themeId="Link.Home"/>
<xc:link text="Home" themeId="Link.Home"/>
</li>
<li class="${view.pageName=='/follow.xsp' ? 'active' : ''}">
<xp:link text="Follow" themeId="Link.Follow"/>
<xc:link text="Follow" themeId="Link.Follow"/>
</li>
<li class="${view.pageName=='/contact.xsp' ? 'active' : ''}">
<xp:link text="Contact" themeId="Link.Contact"/>
<xc:link text="Contact" themeId="Link.Contact"/>
</li>
<li class="${view.pageName=='/about.xsp' ? 'active' : ''}">
<xp:link text="About" themeId="Link.About"/>
<xc:link text="About" themeId="Link.About"/>
</li>
<xp:panel loaded="${javascript:configCache.isUserModerator(@UserName())}" tagName="li"
styleClass="${javascript: !@IsMember(view.pageName, ['/home.xsp', '/follow.xsp', '/about.xsp', '/contact.xsp']) ? 'active' : ''}">
<xp:link text="Moderation" themeId="Link.Moderation"/>
<xc:link text="Moderation" themeId="Link.Moderation"/>
</xp:panel>
</ul>
</div>
Expand Down
12 changes: 6 additions & 6 deletions disk-collaborationtoday/CustomControls/leftColumnLineItems.xsp
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" xmlns:xc="http://www.ibm.com/xsp/custom">

<li class="${view.pageName=='/home.xsp' and param.filter == null ? 'active' : ''}">
<xp:link text="Top Stories" value="/home.xsp"/>
<xc:link text="Top Stories" value="/home.xsp"/>
</li>
<li class="${view.pageName=='/home.xsp' and param.filter=='all' ? 'active' : ''}">
<xp:link text="Recent" value="/home.xsp?filter=all"/>
<xc:link text="Recent" value="/home.xsp?filter=all"/>
</li>
<li class="${view.pageName=='/home.xsp' and param.filter=='popular' ? 'active' : ''}">
<xp:link text="Popular" value="/home.xsp?filter=popular"/>
<xc:link text="Popular" value="/home.xsp?filter=popular"/>
</li>

<xp:repeat rows="30" value="${configCache.categories}" indexVar="index2" var="category">
Expand All @@ -18,11 +18,11 @@

<xp:repeat rows="30" value="#{javascript:configCache.getTypesForCategory(category.getID())}" indexVar="index" var="entry">
<li class="#{javascript:param.filter == entry.getID() ? 'active' : ''}">
<xp:link value="/home.xsp?filter=#{entry.ID}">
<xc:link value="/home.xsp?filter=#{entry.ID}">
<xp:this.text><![CDATA[#{javascript:
(compositeData.showHeaders != "yes" ? category.getDisplayName() + " - " : "") + entry.getDisplayName()
}]]></xp:this.text>
</xp:link>
</xc:link>
</li>
</xp:repeat>
</xp:repeat>
Expand Down
6 changes: 6 additions & 0 deletions disk-collaborationtoday/CustomControls/link.xsp
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:link value="#{url[compositeData.value]}" text="#{compositeData.text}" styleClass="#{compositeData.styleClass}">
<xp:callback/>
</xp:link>
</xp:view>
29 changes: 29 additions & 0 deletions disk-collaborationtoday/CustomControls/link.xsp-config
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<faces-config>
<faces-config-extension>
<namespace-uri>http://www.ibm.com/xsp/custom</namespace-uri>
<default-prefix>xc</default-prefix>
</faces-config-extension>
<composite-component>
<component-type>link</component-type>
<composite-name>link</composite-name>
<composite-file>/link.xsp</composite-file>
<composite-extension>
<designer-extension>
<in-palette>true</in-palette>
</designer-extension>
</composite-extension>
<property>
<property-name>value</property-name>
<property-class>string</property-class>
</property>
<property>
<property-name>text</property-name>
<property-class>string</property-class>
</property>
<property>
<property-name>styleClass</property-name>
<property-class>string</property-class>
</property>
</composite-component>
</faces-config>
16 changes: 16 additions & 0 deletions disk-collaborationtoday/CustomControls/link.xsp.metadata
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?><note class="form" replicaid="85257AD1004C558E" version="9.0" xmlns="http://www.lotus.com/dxl">
<noteinfo noteid="2d02" sequence="4" unid="561A5AC247E7B46F85257ADB0078453D">
<created><datetime>20121221T165340,45-05</datetime></created>
<modified><datetime>20121221T165340,90-05</datetime></modified>
<revised><datetime>20121221T165340,88-05</datetime></revised>
<lastaccessed><datetime>20121221T165340,88-05</datetime></lastaccessed>
<addedtofile><datetime>20121221T165340,45-05</datetime></addedtofile></noteinfo>
<updatedby><name>CN=Jesse Gallagher/O=Frost</name></updatedby>
<wassignedby><name>CN=Jesse Gallagher/O=Frost</name></wassignedby>
<item name="$TITLE"><text>link.xsp</text></item>
<item name="$Flags"><text>gC~4;</text></item>


<item name="$FileNames" sign="true"><text>link.xsp</text></item>

</note>
111 changes: 111 additions & 0 deletions disk-collaborationtoday/Forms/Alias.form
@@ -0,0 +1,111 @@
<?xml version='1.0' encoding='utf-8'?>
<note class='form' xmlns='http://www.lotus.com/dxl' version='9.0' replicaid='85257AD1004C558E'>
<noteinfo noteid='2cf6' unid='EDE1D25546AED14F85257ADB00782C89' sequence='4'>
<created><datetime>20121221T165237,21-05</datetime></created>
<modified><datetime>20121221T165732,68-05</datetime></modified>
<revised><datetime>20121221T165732,66-05</datetime></revised>
<lastaccessed><datetime>20121221T165732,66-05</datetime></lastaccessed>
<addedtofile><datetime>20121221T165237,21-05</datetime></addedtofile></noteinfo>
<updatedby><name>CN=Jesse Gallagher/O=Frost</name></updatedby>
<wassignedby><name>CN=Jesse Gallagher/O=Frost</name></wassignedby>
<item name='$Comment' sign='true'><text/></item>
<item name='$SubForm_RepIDs' sign='true'><text>0000000000000000</text></item>
<item name='Date' summary='false' sign='true'>
<rawitemdata type='400'>
AAAAAAAAAAA=
</rawitemdata></item>
<item name='Time' summary='false' sign='true'>
<rawitemdata type='400'>
AAAAAAAAAAA=
</rawitemdata></item>
<item name='DateTime' summary='false' sign='true'>
<rawitemdata type='400'>
AAAAAAAAAAA=
</rawitemdata></item>
<item name='DateComposed' summary='false' sign='true'>
<rawitemdata type='400'>
AAAAAAAAAAA=
</rawitemdata></item>
<item name='DateModified' summary='false' sign='true'>
<rawitemdata type='400'>
AAAAAAAAAAA=
</rawitemdata></item>
<item name='$HTMLCode' sign='true'>
<rawitemdata type='1'>
X/8QAAIADwAHAAAAAAAAAA==
</rawitemdata></item>
<item name='$TITLE'><text>Alias</text></item>
<item name='$Info' sign='true'>
<rawitemdata type='1'>
hhgBAIAAAAAAgAAAAQABAP///wAQAAAA
</rawitemdata></item>
<item name='$WindowTitle' sign='true'><formula>"Alias"</formula></item>
<item name='$Flags'><text/></item>
<item name='$XPageAlt'><text>Project.xsp</text></item>
<item name='$DesignerVersion'><text>8.5.3</text></item>
<item name='$$ScriptName' summary='false' sign='true'><text>Project</text></item>
<item name='From' placeholder='true'>
<rawitemdata type='0'>
</rawitemdata></item>
<item name='To' placeholder='true'>
<rawitemdata type='0'>
</rawitemdata></item>
<item name='$$Title' placeholder='true'>
<rawitemdata type='0'>
</rawitemdata></item>
<item name='$$Creator' placeholder='true'>
<rawitemdata type='0'>
</rawitemdata></item>
<item name='$Fields'><textlist><text>$$Creator</text><text>$$Title</text><text
>To</text><text>From</text></textlist></item>
<item name='$Body' sign='true'>
<rawitemdata type='1'>
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
AwAkJENyZWF0b3IA3gYAAIr/hf8IAAEAAAo=
</rawitemdata></item>
<item name='$V5ACTIONS' sign='true'>
<rawitemdata type='1'>
vRwjAAAAAQABAAAAAQAAAAAAAAAAAAAACAACAHn/bAABANTQyAABAAAAAAAJAAAAAAABANTQyAAA
AB8AAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz/OgAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAEAAAAAAAAAAAAAAAAAAAC+/zwAAAABAAQAjwAAAQYAAAAEAAAARGVsZXRlIAAAABIA
AgDaBwAAAAAAAO0BAwAHAAwABQAJMFMwRQC+/5YAAAABAAUADwAAAAQAXAABAAAARWRpdCAAAAAS
AAIA6AcAAAAAAADtAQMABwAMAAUACTBTMEUAXAAKAAQAAAA+AIsAAgApAQAAAAAAAPsCKgH7AVQB
AAAAAAAAAAAQQA4CAgAFAAAAAAAAAPQAtAJ5AAoCBAAeARwCAwAHABgAEQAJNlM5UzEwUzExUzEy
UzE4UwC+/4wAAAABAAAAkwEQAAQAAAACAAAAU2F2ZXIACgAEAAAARgD7AAUBAQADAFdlYgAKAuQA
HQKvACwAIAACAMYLAAAAAAAA7QECAOgHAAAAAAAA7QGzAq4ADAABAAAArgAEALUDAwAHACYAHwAJ
MlJUNVM2UzhTMTBSVFQxNVJUVDE5UlQyMVJUMjJSAPb/OQAAAAAAAwATABcAAAAAAAAAAAAAAAAA
AAAAAAAAAAB0YW5nb1xkb2N1bWVudC1zYXZlLmdpZj++/5YAAAABAAAAkwEQAA4AAAADAAAAU2F2
ZSBhbmQgQ2xvc2VyAAoABAAAAEYA+wAFAQEAAwBXZWIACgLkAB0CrwAsACAAAgDGCwAAAAAAAO0B
AgD8EQAAAAAAAO0BswKuAAwAAQAAAK4ABAC1AwMABwAmAB8ACTJSVDVTNlM4UzEwUlRUMTVSVFQx
OVJUMjFSVDIyUgD2/zoAAAAAAAMAEwAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAdGFuZ29cc3lzdGVt
LWxvZy1vdXQuZ2lm
</rawitemdata></item></note>

0 comments on commit 49dce44

Please sign in to comment.