package org.example.xtend.examples;
import com.google.common.base.Objects;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.InputOutput;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.ListExtensions;
import org.example.xtend.examples.Person;
@SuppressWarnings("all")
public class PersonUtil {
public static List<Person> mysort(final List<Person> persons) {
final Function1<Person, String> _function = new Function1<Person, String>() {
@Override
public String apply(final Person it) {
String _surname = it.getSurname();
String _plus = (_surname + " ");
String _firstname = it.getFirstname();
String _plus_1 = (_plus + _firstname);
String _plus_2 = (_plus_1 + " ");
int _age = it.getAge();
return (_plus_2 + Integer.valueOf(_age));
}
};
return IterableExtensions.<Person, String>sortBy(persons, _function);
}
public static String asString(final List<Person> persons) {
final Function1<Person, String> _function = new Function1<Person, String>() {
@Override
public String apply(final Person it) {
String _firstname = it.getFirstname();
String _plus = (_firstname + " ");
String _surname = it.getSurname();
String _plus_1 = (_plus + _surname);
String _plus_2 = (_plus_1 + " (");
int _age = it.getAge();
String _plus_3 = (_plus_2 + Integer.valueOf(_age));
return (_plus_3 + ")");
}
};
List<String> _map = ListExtensions.<Person, String>map(persons, _function);
return IterableExtensions.join(_map, ", ");
}
public static Person findByName(final List<Person> persons, final String name) {
final Function1<Person, Boolean> _function = new Function1<Person, Boolean>() {
@Override
public Boolean apply(final Person it) {
String _firstname = it.getFirstname();
return Boolean.valueOf(Objects.equal(_firstname, name));
}
};
return IterableExtensions.<Person>findFirst(persons, _function);
}
public static void main(final String[] args) {
Person _person = new Person("James", "Smith", 50);
Person _person_1 = new Person("John", "Smith", 40);
Person _person_2 = new Person("James", "Anderson", 40);
Person _person_3 = new Person("John", "Anderson", 30);
Person _person_4 = new Person("Paul", "Anderson", 30);
final ArrayList<Person> personList = CollectionLiterals.<Person>newArrayList(_person, _person_1, _person_2, _person_3, _person_4);
List<Person> _mysort = PersonUtil.mysort(personList);
String _asString = PersonUtil.asString(_mysort);
InputOutput.<String>println(_asString);
final Function1<Person, Boolean> _function = new Function1<Person, Boolean>() {
@Override
public Boolean apply(final Person it) {
String _firstname = it.getFirstname();
return Boolean.valueOf(_firstname.startsWith("J"));
}
};
Iterable<Person> _filter = IterableExtensions.<Person>filter(personList, _function);
final Function1<Person, Integer> _function_1 = new Function1<Person, Integer>() {
@Override
public Integer apply(final Person it) {
return Integer.valueOf(it.getAge());
}
};
List<Person> _sortBy = IterableExtensions.<Person, Integer>sortBy(_filter, _function_1);
Iterable<Person> _take = IterableExtensions.<Person>take(_sortBy, 3);
final Function1<Person, String> _function_2 = new Function1<Person, String>() {
@Override
public String apply(final Person it) {
String _surname = it.getSurname();
String _plus = (_surname + ", ");
String _firstname = it.getFirstname();
return (_plus + _firstname);
}
};
Iterable<String> _map = IterableExtensions.<Person, String>map(_take, _function_2);
final String result = IterableExtensions.join(_map, "; ");
InputOutput.<String>println(result);
}
}