1 /* 2 * Copyright (c) 2002-2014, Mairie de Paris 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright notice 10 * and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright notice 13 * and the following disclaimer in the documentation and/or other materials 14 * provided with the distribution. 15 * 16 * 3. Neither the name of 'Mairie de Paris' nor 'Lutece' nor the names of its 17 * contributors may be used to endorse or promote products derived from 18 * this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 * 32 * License 1.0 33 */ 34 package fr.paris.lutece.plugins.contextinclude.service; 35 36 import fr.paris.lutece.plugins.contextinclude.business.Context; 37 import fr.paris.lutece.plugins.contextinclude.util.OperatorEnum; 38 39 import org.springframework.transaction.annotation.Transactional; 40 41 import java.util.List; 42 43 44 /** 45 * 46 * IContextService 47 * 48 */ 49 public interface IContextService 50 { 51 /** 52 * Create a new context 53 * @param context the context 54 */ 55 @Transactional( ContextIncludePlugin.TRANSACTION_MANAGER ) 56 void create( Context context ); 57 58 /** 59 * Update a context 60 * @param context a context 61 */ 62 @Transactional( ContextIncludePlugin.TRANSACTION_MANAGER ) 63 void update( Context context ); 64 65 /** 66 * Remove a context 67 * @param nIdContext the id context 68 */ 69 @Transactional( ContextIncludePlugin.TRANSACTION_MANAGER ) 70 void remove( int nIdContext ); 71 72 /** 73 * Find context by its primary key 74 * @param nIdContext the id context 75 * @return a {@link Context} 76 */ 77 Context findByPrimaryKey( int nIdContext ); 78 79 /** 80 * Find all contexts 81 * @return a list of {@link Context} 82 */ 83 List<Context> findAll( ); 84 85 /** 86 * Find active contexts 87 * @return a list of {@link Context} 88 */ 89 List<Context> findActiveContexts( ); 90 91 /** 92 * Find by relative priority 93 * @param operator the operator 94 * @param nPriority the priority to compare to 95 * @return a list of {@link Context} 96 */ 97 List<Context> findByRelativePriority( OperatorEnum operator, int nPriority ); 98 99 // CHECKS 100 101 /** 102 * Check if the list of contexts are well ordered 103 * @return true if it is well ordered, false otherwise 104 */ 105 boolean isWellOrdered( ); 106 107 // DO 108 109 /** 110 * Reorder all demand types 111 */ 112 void doReorderContexts( ); 113 114 /** 115 * Reorder the contexts that are greater or equal to the nCurrentPriority. 116 * <br /> 117 * Those context orders are move up by 1. 118 * @param nCurrentPriority the current priority 119 */ 120 void doReorderContextsGreaterPriority( int nCurrentPriority ); 121 }