<repo_name>alun/vitrina<file_sep>/main/src/java/com/katlex/vitrina/GoodsNavigationException.java
package com.katlex.vitrina;

public class GoodsNavigationException extends RuntimeException {
	
}
 


<file_sep>/main/grails-app/services/com/katlex/vitrina/goods/IGoodsNavigationService.java
package com.katlex.vitrina.goods;

/**
 * Сервис навигации по списку товаров
 */
interface IGoodsNavigationService {

 /**
  * Возвращает id текущего просматриваемого товара
  */
 Long getCurrentGoodsId();

 /**
  * Делает текущим товар с id == value.
  * Если такой товар с таким id отсутствует в списке,
  * то вызов возвращает ошибку и при этом текущий товар
  * остается прежним.
  */
 void setCurrentGoodsId(Long value);

 /**
  * Получение id следующего товара в списке
  */
 Long nextGoodsId(); 

 /**
  * Получение id предыдущего товара в списке
  */
 Long prevGoodsId();

 /**
  * Получение полного колличества товаров в списке
  */
 Long goodsTotal();
 /**
  * Получение номера позициции текущего товара в списке
  */
 Long goodsCurrentPosition();

 /**
  * Получение id товара, находящегося на указанной позиции в списке
  */
 Long goodsGetIdAt( Long pos );

 /**
  * Удаляет текущий товар, либо товар goodsId из списка товаров
  */
 void removeGoodsFromList(Long goodsId);
 
 Long removeCurrentGoodsFromList();
}

<file_sep>/main/grails-app/services/com/katlex/vitrina/goods/IGoodsOperationsService.java
package com.katlex.vitrina.goods;
import com.katlex.vitrina.domain.Goods;

interface IGoodsOperationsService {


 
 Goods saveGoods(Goods goods);

 void deleteGoods(Goods goods);  

}
<file_sep>/main/grails-app/services/com/katlex/vitrina/goods/IGoodsListService.java
package com.katlex.vitrina.goods;

import java.util.List;

interface IGoodsListService {

/**
 * Установка списка всех товаров.
 * Для обычного пользователя (ANONYMOUS) список всех товаров состоит из
 * утвержденных модератором товаров, принадлежащих VALIDATED пользователям.
 * Для REGISTERED пользователей список всех товаров дополнительно включает товары,
 * которыми владеет данных пользователь, вне зависимости от их "утвержденности".
 * Для MODERATOR пользователей, список товаров состоит из всех возможных товаров в системе.
 */
 void allGoods(); 

/**
 * Установка списка неутвержденных товаров.
 * Для модераторов устанавливает список, состоящий только из неутвержденных товаров.
 * Для остальных - SecutiryException
 */
 void unApprovedGoods();

/**
 * Для REGISTEGED пользователей, устанавливает список товаров, состоящий только из товаров,
 * владельцем которых является текущих пользователь.
 * Для ANONYMOUS - SecutiryException
 */
 void myGoods(); 


/**
 * Добавляет фильтр к текущему списку товаров, возможно изменяя при этом сам список
 */
// void addListFilter( Filter filter); 

// Дальше идут функции сохранения/загрузки списка товаров
// Имена списков локальные для пользователей
// Для загрузки может быть использовано полное имя списка "имя_пользователя.имя_списка"
// При сохранении полное имя не может быть использовано

/**
 * Проверяет существует ли список товаров с указаным именем
 */
 Boolean listNameExists(String listName); 

/**
 * Сохраняет список с указанным именем. Выбрасывает исключение если
 * спискок с указанным именем существует и force == false.
 * Если force == true, то старый список стирается
 */
 void saveList(String listName, Boolean force);


/**
 * Загружает список с указанным именем. Выбрасывает исключение если такого
 * списка не существует.
 */
 void loadList(String listName);

/**
 * Получает имена всех сохранненных списков,
 * начинающиеся на startWith, включает открытые списки других пользователей,
 * если open == true
 */
 List<String> listNames(String startWith, Boolean open);

/**
 * Делает список доступным для остальных пользователей
 */
 void setListWorldOpen(String listName, Boolean open);


}
<file_sep>/main/grails-app/services/UserAdministrationService.java

public class UserAdministrationService {

}
