/modules/cms-core/src/main/java/com/enonic/cms/domain/link/NativeLinkListener.java
https://github.com/informedindividual/cms-ce · Java · 69 lines · 54 code · 11 blank · 4 comment · 11 complexity · 7bab998b530b4564d58fda591a3abf32 MD5 · raw file
- /*
- * Copyright 2000-2011 Enonic AS
- * http://www.enonic.com/license
- */
- package com.enonic.cms.domain.link;
- import java.util.regex.Matcher;
- import java.util.regex.Pattern;
- public abstract class NativeLinkListener
- {
- private final LinkScanner scanner = new LinkScanner();
- private final static Pattern PATTERN = Pattern.compile( "^([a-z]+)://([0-9]+).*" );
- public void process( String input )
- {
- for ( LinkMatch match : this.scanner.scan( input ) )
- {
- processLink( match.getLink() );
- }
- }
- private void processLink( String link )
- {
- Matcher matcher = PATTERN.matcher( link );
- if ( matcher.find() )
- {
- String scheme = matcher.group( 1 );
- Integer key = toInteger( matcher.group( 2 ) );
- if ( ( scheme == null ) || ( key == null ) )
- {
- return;
- }
- if ( "image".equalsIgnoreCase( scheme ) )
- {
- onImageLink( key, link );
- }
- else if ( "attachment".equalsIgnoreCase( scheme ) )
- {
- onBinaryLink( key, link );
- }
- else if ( "content".equalsIgnoreCase( scheme ) )
- {
- onContentLink( key, link );
- }
- }
- }
- private Integer toInteger( String value )
- {
- try
- {
- return new Integer( value );
- }
- catch ( Exception e )
- {
- return null;
- }
- }
- public abstract void onImageLink( int key, String link );
- public abstract void onBinaryLink( int key, String link );
- public abstract void onContentLink( int key, String link );
- }