*/
package org.opendaylight.yangtools.yang.model.api.stmt;
-import javax.annotation.Nonnull;
+import static com.google.common.base.Verify.verifyNotNull;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
-public interface OrderedByStatement extends DeclaredStatement<String> {
+public interface OrderedByStatement extends DeclaredStatement<OrderedByStatement.Ordering> {
+ @NonNullByDefault
+ enum Ordering {
+ SYSTEM("system"),
+ USER("user");
- @Nonnull String getValue();
-}
+ private String argumentString;
+
+ Ordering(final String argumentString) {
+ this.argumentString = argumentString;
+ }
+
+ public String getArgumentString() {
+ return argumentString;
+ }
+ public static Ordering forArgumentString(final String argumentString) {
+ switch (argumentString) {
+ case "system":
+ return SYSTEM;
+ case "user":
+ return USER;
+ default:
+ throw new IllegalArgumentException("Invalid ordering string '" + argumentString + "'");
+ }
+ }
+ }
+
+ @Override
+ default StatementDefinition statementDefinition() {
+ return YangStmtMapping.ORDERED_BY;
+ }
+
+ default @NonNull Ordering getValue() {
+ // FIXME: YANGTOOLS-908: verifyNotNull() should not be needed here
+ return verifyNotNull(argument());
+ }
+}