[ 
https://issues.apache.org/jira/browse/ISIS-2813?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Daniel Keir Haywood updated ISIS-2813:
--------------------------------------
    Description: 
where the file is named "Customer#orders.columnOrder.txt" (for Customer#orders) 
and looks like:
{code:java}
orderNum
placedOn
shipTo
numItems{code}
in other words the properties of the referenced entity Order to show as columns 
in the Customer's orders collection.

and similarly for standalone collections of `Customer.columnOrder.txt`:
{code:java}
customerNum
lastName
status
addressPostcode{code}

  was:
in its entirety:
{code:java}
@Service
@Priority(PriorityPrecedence.MIDPOINT)
@RequiredArgsConstructor
@Log4j2
public class TableColumnOrderServiceUsingFiles implements 
TableColumnOrderService {

  final UserDetailCurrentService userDetailCurrentService;

  static final String LINE_SEPARATOR = System.getProperty("line.separator");

  @Override
  public List<String> orderParented(
      final Object domainObject,
      final String collectionId,
      final Class<?> collectionType,
      final List<String> propertyIds) {

    val domainClass = domainObject.getClass();
    val resourceNames = buildResourceNames(collectionId, domainClass);
    val contentsIfAny = tryLoad(domainClass, resourceNames);
    return contentsIfAny.map(s -> 
s.split(LINE_SEPARATOR)).map(Arrays::asList).orElse(null);
  }

  private List<String> buildResourceNames(String collectionId, Class<?> 
domainClass) {
    final List<String> resourceNames = new ArrayList<>();
    final String resourceName =
        String.format("%s.%s.txt", domainClass.getSimpleName(), collectionId);
    resourceNames.add(resourceName);
    userDetailCurrentService.currentUserPrimaryRoleName().ifPresent(x ->
        resourceNames.add(
            String.format("%s.%s.%s.txt", domainClass.getSimpleName(), 
collectionId, x))
    );
    return resourceNames;
  }

  private Optional<String> tryLoad(Class<?> domainClass, List<String> 
resourceNames) {
    for (String resourceName : resourceNames) {
      try {
        final String contents = _Resources.loadAsStringUtf8(domainClass, 
resourceName);
        if (contents != null) {
          return Optional.of(contents);
        }
      } catch (Exception ignore) {
        // in most cases there won't be a file to load, so we just continue.
        // not an error condition, but we'll log it at lowest (trace) level.
        if (log.isTraceEnabled()) {
          log.trace("No resource file '" + resourceName + "' relative to " + 
domainClass.getName());
        }
      }
    }
    return Optional.empty();
  }

  @Override
  public List<String> orderStandalone(
      final Class<?> collectionType, final List<String> propertyIds) {
    return null;
  }
} {code}
where the file is named "Customer.orders.txt" (for Customer#orders) and looks 
like:
{code:java}
orderNum
placedOn
shipTo
numItems{code}
in other words the properties of the referenced entity Order to show as columns 
in the Customer's orders collection.


> TableColumnOrderingService using files
> --------------------------------------
>
>                 Key: ISIS-2813
>                 URL: https://issues.apache.org/jira/browse/ISIS-2813
>             Project: Isis
>          Issue Type: New Feature
>          Components: Isis Core
>    Affects Versions: 2.0.0-M5
>            Reporter: Daniel Keir Haywood
>            Assignee: Daniel Keir Haywood
>            Priority: Major
>             Fix For: 2.0.0-M6
>
>
> where the file is named "Customer#orders.columnOrder.txt" (for 
> Customer#orders) and looks like:
> {code:java}
> orderNum
> placedOn
> shipTo
> numItems{code}
> in other words the properties of the referenced entity Order to show as 
> columns in the Customer's orders collection.
> and similarly for standalone collections of `Customer.columnOrder.txt`:
> {code:java}
> customerNum
> lastName
> status
> addressPostcode{code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to