/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

  1. /*
  2. * Copyright 2000-2011 Enonic AS
  3. * http://www.enonic.com/license
  4. */
  5. package com.enonic.cms.domain.link;
  6. import java.util.regex.Matcher;
  7. import java.util.regex.Pattern;
  8. public abstract class NativeLinkListener
  9. {
  10. private final LinkScanner scanner = new LinkScanner();
  11. private final static Pattern PATTERN = Pattern.compile( "^([a-z]+)://([0-9]+).*" );
  12. public void process( String input )
  13. {
  14. for ( LinkMatch match : this.scanner.scan( input ) )
  15. {
  16. processLink( match.getLink() );
  17. }
  18. }
  19. private void processLink( String link )
  20. {
  21. Matcher matcher = PATTERN.matcher( link );
  22. if ( matcher.find() )
  23. {
  24. String scheme = matcher.group( 1 );
  25. Integer key = toInteger( matcher.group( 2 ) );
  26. if ( ( scheme == null ) || ( key == null ) )
  27. {
  28. return;
  29. }
  30. if ( "image".equalsIgnoreCase( scheme ) )
  31. {
  32. onImageLink( key, link );
  33. }
  34. else if ( "attachment".equalsIgnoreCase( scheme ) )
  35. {
  36. onBinaryLink( key, link );
  37. }
  38. else if ( "content".equalsIgnoreCase( scheme ) )
  39. {
  40. onContentLink( key, link );
  41. }
  42. }
  43. }
  44. private Integer toInteger( String value )
  45. {
  46. try
  47. {
  48. return new Integer( value );
  49. }
  50. catch ( Exception e )
  51. {
  52. return null;
  53. }
  54. }
  55. public abstract void onImageLink( int key, String link );
  56. public abstract void onBinaryLink( int key, String link );
  57. public abstract void onContentLink( int key, String link );
  58. }