001package org.unix4j.unix.xargs;
002
003import org.unix4j.unix.Xargs;
004
005/**
006 * Factory for the {@link Xargs xargs} command returning 
007 * a new command instance from every signature method.
008 */
009public final class XargsFactory implements Xargs.Interface<XargsCommand> {
010        
011        /**
012         * The singleton instance of this factory.
013         */
014        public static final XargsFactory INSTANCE = new XargsFactory();
015
016        /**
017         * Private, only used to create singleton instance.
018         */
019        private XargsFactory() {
020                super();
021        }
022
023        @Override
024        public XargsCommand xargs() {
025                final XargsArguments xargsArgs = new XargsArguments();
026                return new XargsCommand(xargsArgs);
027        }
028
029        @Override
030        public XargsCommand xargs(String... args) {
031                final XargsArguments xargsArgs = new XargsArguments(args);
032                return new XargsCommand(xargsArgs);
033        }
034
035        @Override
036        public XargsCommand xargs(String delimiter) {
037                final XargsArguments xargsArgs = new XargsArguments();
038                xargsArgs.setDelimiter(delimiter);
039                return new XargsCommand(xargsArgs);
040        }
041
042        @Override
043        public XargsCommand xargs(long maxLines) {
044                final XargsArguments xargsArgs = new XargsArguments();
045                xargsArgs.setMaxLines(maxLines);
046                return new XargsCommand(xargsArgs);
047        }
048
049        @Override
050        public XargsCommand xargs(int maxArgs) {
051                final XargsArguments xargsArgs = new XargsArguments();
052                xargsArgs.setMaxArgs(maxArgs);
053                return new XargsCommand(xargsArgs);
054        }
055
056        @Override
057        public XargsCommand xargs(long maxLines, int maxArgs) {
058                final XargsArguments xargsArgs = new XargsArguments();
059                xargsArgs.setMaxLines(maxLines);
060                xargsArgs.setMaxArgs(maxArgs);
061                return new XargsCommand(xargsArgs);
062        }
063
064        @Override
065        public XargsCommand xargs(String delimiter, long maxLines) {
066                final XargsArguments xargsArgs = new XargsArguments();
067                xargsArgs.setDelimiter(delimiter);
068                xargsArgs.setMaxLines(maxLines);
069                return new XargsCommand(xargsArgs);
070        }
071
072        @Override
073        public XargsCommand xargs(String delimiter, int maxArgs) {
074                final XargsArguments xargsArgs = new XargsArguments();
075                xargsArgs.setDelimiter(delimiter);
076                xargsArgs.setMaxArgs(maxArgs);
077                return new XargsCommand(xargsArgs);
078        }
079
080        @Override
081        public XargsCommand xargs(String delimiter, long maxLines, int maxArgs) {
082                final XargsArguments xargsArgs = new XargsArguments();
083                xargsArgs.setDelimiter(delimiter);
084                xargsArgs.setMaxLines(maxLines);
085                xargsArgs.setMaxArgs(maxArgs);
086                return new XargsCommand(xargsArgs);
087        }
088
089        @Override
090        public XargsCommand xargs(String delimiter, String eof, long maxLines, int maxArgs) {
091                final XargsArguments xargsArgs = new XargsArguments();
092                xargsArgs.setDelimiter(delimiter);
093                xargsArgs.setEof(eof);
094                xargsArgs.setMaxLines(maxLines);
095                xargsArgs.setMaxArgs(maxArgs);
096                return new XargsCommand(xargsArgs);
097        }
098
099        @Override
100        public XargsCommand xargs(XargsOptions options) {
101                final XargsArguments xargsArgs = new XargsArguments(options);
102                return new XargsCommand(xargsArgs);
103        }
104
105        @Override
106        public XargsCommand xargs(XargsOptions options, String delimiter) {
107                final XargsArguments xargsArgs = new XargsArguments(options);
108                xargsArgs.setDelimiter(delimiter);
109                return new XargsCommand(xargsArgs);
110        }
111
112        @Override
113        public XargsCommand xargs(XargsOptions options, long maxLines) {
114                final XargsArguments xargsArgs = new XargsArguments(options);
115                xargsArgs.setMaxLines(maxLines);
116                return new XargsCommand(xargsArgs);
117        }
118
119        @Override
120        public XargsCommand xargs(XargsOptions options, int maxArgs) {
121                final XargsArguments xargsArgs = new XargsArguments(options);
122                xargsArgs.setMaxArgs(maxArgs);
123                return new XargsCommand(xargsArgs);
124        }
125
126        @Override
127        public XargsCommand xargs(XargsOptions options, long maxLines, int maxArgs) {
128                final XargsArguments xargsArgs = new XargsArguments(options);
129                xargsArgs.setMaxLines(maxLines);
130                xargsArgs.setMaxArgs(maxArgs);
131                return new XargsCommand(xargsArgs);
132        }
133
134        @Override
135        public XargsCommand xargs(XargsOptions options, String delimiter, long maxLines) {
136                final XargsArguments xargsArgs = new XargsArguments(options);
137                xargsArgs.setDelimiter(delimiter);
138                xargsArgs.setMaxLines(maxLines);
139                return new XargsCommand(xargsArgs);
140        }
141
142        @Override
143        public XargsCommand xargs(XargsOptions options, String delimiter, int maxArgs) {
144                final XargsArguments xargsArgs = new XargsArguments(options);
145                xargsArgs.setDelimiter(delimiter);
146                xargsArgs.setMaxArgs(maxArgs);
147                return new XargsCommand(xargsArgs);
148        }
149
150        @Override
151        public XargsCommand xargs(XargsOptions options, String delimiter, long maxLines, int maxArgs) {
152                final XargsArguments xargsArgs = new XargsArguments(options);
153                xargsArgs.setDelimiter(delimiter);
154                xargsArgs.setMaxLines(maxLines);
155                xargsArgs.setMaxArgs(maxArgs);
156                return new XargsCommand(xargsArgs);
157        }
158
159        @Override
160        public XargsCommand xargs(XargsOptions options, String delimiter, String eof, long maxLines, int maxArgs) {
161                final XargsArguments xargsArgs = new XargsArguments(options);
162                xargsArgs.setDelimiter(delimiter);
163                xargsArgs.setEof(eof);
164                xargsArgs.setMaxLines(maxLines);
165                xargsArgs.setMaxArgs(maxArgs);
166                return new XargsCommand(xargsArgs);
167        }
168}