├── src ├── main │ ├── resources │ │ ├── BButton_template │ │ ├── Getter_template │ │ ├── BList_template │ │ ├── Import_template │ │ ├── Field__template │ │ ├── Field_B_template │ │ ├── Assignment_Button_template │ │ ├── BList_Case_template │ │ ├── Assignment_Menu_template │ │ ├── OnClickListener_Case_template │ │ ├── Assignment__template │ │ ├── OnClickListener_template │ │ ├── Getter_Case_template │ │ ├── BButton_Case_template │ │ ├── Menu_template │ │ ├── Activity_template │ │ ├── BActivity_template │ │ ├── Fragment_template │ │ ├── BFragment_template │ │ ├── Adapter_template │ │ └── BAdapter_template │ └── java │ │ └── com │ │ └── morcinek │ │ └── android │ │ └── codegenerator │ │ ├── extractor │ │ ├── string │ │ │ ├── StringExtractor.java │ │ │ ├── FileNameExtractor.java │ │ │ ├── ResourceTypeExtractor.java │ │ │ └── ResourceIdExtractor.java │ │ ├── PackageExtractor.java │ │ ├── model │ │ │ ├── Resource.java │ │ │ ├── ResourceId.java │ │ │ └── ResourceType.java │ │ ├── ResourceExtractor.java │ │ ├── XMLPackageExtractor.java │ │ └── XMLResourceExtractor.java │ │ ├── codegeneration │ │ ├── builders │ │ │ ├── CodeBuilder.java │ │ │ ├── file │ │ │ │ ├── ResourceNameBuilder.java │ │ │ │ ├── PackageBuilder.java │ │ │ │ └── ClassNameBuilder.java │ │ │ ├── resources │ │ │ │ ├── ResourceCodeBuilder.java │ │ │ │ ├── InterfaceBuilder.java │ │ │ │ ├── FieldsBuilder.java │ │ │ │ ├── ImportsBuilder.java │ │ │ │ ├── AssignmentsBuilder.java │ │ │ │ └── MethodsBuilder.java │ │ │ └── BuildersCollection.java │ │ ├── templates │ │ │ ├── TemplatesProvider.java │ │ │ ├── ResourceTemplatesProvider.java │ │ │ └── TemplateManager.java │ │ ├── providers │ │ │ ├── ResourceProvidersFactory.java │ │ │ ├── ResourceProvider.java │ │ │ ├── factories │ │ │ │ ├── MenuResourceProvidersFactory.java │ │ │ │ ├── BAdapterResourceProvidersFactory.java │ │ │ │ ├── AdapterResourceProvidersFactory.java │ │ │ │ ├── BActivityResourceProvidersFactory.java │ │ │ │ ├── ActivityResourceProvidersFactory.java │ │ │ │ └── FragmentResourceProvidersFactory.java │ │ │ └── resources │ │ │ │ ├── BDefaultProvider.java │ │ │ │ ├── GetterProvider.java │ │ │ │ ├── BButtonProvider.java │ │ │ │ ├── MenuProvider.java │ │ │ │ ├── BListProvider.java │ │ │ │ ├── DefaultProvider.java │ │ │ │ ├── ButtonProvider.java │ │ │ │ └── AbstractResourceProvider.java │ │ └── TemplateCodeGenerator.java │ │ └── CodeGenerator.java └── test │ ├── java │ └── com │ │ └── morcinek │ │ └── android │ │ └── codegenerator │ │ ├── util │ │ └── InputStreamProvider.java │ │ ├── codegeneration │ │ ├── builders │ │ │ ├── file │ │ │ │ └── PackageBuilderTest.java │ │ │ ├── ResourceNameBuilderTest.java │ │ │ ├── ClassNameBuilderTest.java │ │ │ └── resources │ │ │ │ ├── InterfaceBuilderTest.java │ │ │ │ ├── AssignmentsBuilderTest.java │ │ │ │ ├── FieldsBuilderTest.java │ │ │ │ └── MethodsBuilderTest.java │ │ ├── templates │ │ │ ├── ResourceTemplatesProviderTest.java │ │ │ └── TemplateManagerTest.java │ │ ├── providers │ │ │ ├── factories │ │ │ │ └── ActivityResourceProvidersFactoryTest.java │ │ │ └── resources │ │ │ │ └── GenericResourceProviderTest.java │ │ ├── MenuTemplateCodeGeneratorTest.java │ │ ├── AdapterTemplateCodeGeneratorTest.java │ │ ├── BAdapterTemplateCodeGeneratorTest.java │ │ ├── ActivityTemplateCodeGeneratorTest.java │ │ ├── BActivityTemplateCodeGeneratorTest.java │ │ └── BFragmentTemplateCodeGeneratorTest.java │ │ ├── extractor │ │ ├── string │ │ │ ├── FileNameExtractorTest.java │ │ │ ├── ResourceIdExtractorTest.java │ │ │ └── ResourceTypeExtractorTest.java │ │ ├── XMLPackageExtractorTest.java │ │ └── XMLResourceExtractorTest.java │ │ ├── AdapterCodeGeneratorTest.java │ │ ├── BActivityCodeGeneratorTest.java │ │ ├── MenuCodeGeneratorTest.java │ │ ├── ActivityCodeGeneratorTest.java │ │ └── FragmentCodeGeneratorTest.java │ └── resources │ ├── codegeneration │ ├── menus │ │ ├── create_game.xml │ │ ├── game_session.xml │ │ └── games.xml │ └── layouts │ │ ├── view_pager.xml │ │ ├── butterknife_simple.xml │ │ ├── search_list.xml │ │ ├── game_list_item.xml │ │ └── create_game.xml │ ├── extractor │ ├── layouts │ │ ├── main_no_header.xml │ │ ├── main_header_2.xml │ │ ├── main_header_1.xml │ │ ├── specific.xml │ │ ├── layout.xml │ │ └── locations_map.xml │ └── manifests │ │ ├── AndroidManifestWithoutPackage.xml │ │ └── AndroidManifest.xml │ └── results │ ├── activities │ ├── BSimpleViewActivity.java │ ├── ViewPagerActivity.java │ ├── BSimpleActivity.java │ ├── MainActivity.java │ ├── CreateGameActivity.java │ ├── SearchListActivity.java │ ├── BSimpleListActivity.java │ ├── TermsActivity.java │ ├── BSimpleButtonActivity.java │ ├── BFormActivity.java │ ├── FormActivity.java │ └── BFormFragment.java │ ├── menus │ ├── CreateGame.java │ ├── Games.java │ └── GameSession.java │ ├── fragments │ ├── ViewPagerFragment.java │ ├── BSimpleViewFragment.java │ ├── GameListItemFragment.java │ ├── CreateGameFragment.java │ ├── SearchListFragment.java │ ├── BSimpleListFragment.java │ └── BSimpleButtonFragment.java │ └── adapters │ ├── BMainAdapter.java │ ├── MainAdapter.java │ ├── BTermsAdapter.java │ ├── TermsAdapter.java │ ├── NewGamesAdapter.java │ ├── BFormAdapter.java │ └── FormAdapter.java ├── .gitignore ├── README.md ├── pom.xml └── LICENSE /src/main/resources/BButton_template: -------------------------------------------------------------------------------- 1 | ${CASES} -------------------------------------------------------------------------------- /src/main/resources/Getter_template: -------------------------------------------------------------------------------- 1 | ${CASES} -------------------------------------------------------------------------------- /src/main/resources/BList_template: -------------------------------------------------------------------------------- 1 | 2 | ${CASES} -------------------------------------------------------------------------------- /src/main/resources/Import_template: -------------------------------------------------------------------------------- 1 | import ${RESOURCE_PACKAGE}.${RESOURCE_TYPE}; 2 | -------------------------------------------------------------------------------- /src/main/resources/Field__template: -------------------------------------------------------------------------------- 1 | private ${RESOURCE_TYPE} ${RESOURCE_NAME}; 2 | -------------------------------------------------------------------------------- /src/main/resources/Field_B_template: -------------------------------------------------------------------------------- 1 | @Bind(${RESOURCE_ID}) ${RESOURCE_TYPE} ${RESOURCE_NAME}; 2 | -------------------------------------------------------------------------------- /src/main/resources/Assignment_Button_template: -------------------------------------------------------------------------------- 1 | ${CONTAINER_PREFIX}findViewById(${RESOURCE_ID}).setOnClickListener(this); 2 | -------------------------------------------------------------------------------- /src/main/resources/BList_Case_template: -------------------------------------------------------------------------------- 1 | @OnItemClick(${RESOURCE_ID}) void onItemClick(int position) { 2 | //TODO implement 3 | } 4 | -------------------------------------------------------------------------------- /src/main/resources/Assignment_Menu_template: -------------------------------------------------------------------------------- 1 | case ${RESOURCE_ID}: 2 | //TODO implement 3 | return true; 4 | -------------------------------------------------------------------------------- /src/main/resources/OnClickListener_Case_template: -------------------------------------------------------------------------------- 1 | case ${RESOURCE_ID}: 2 | //TODO implement 3 | break; 4 | -------------------------------------------------------------------------------- /src/main/resources/Assignment__template: -------------------------------------------------------------------------------- 1 | ${RESOURCE_PREFIX}${RESOURCE_NAME} = (${RESOURCE_TYPE}) ${CONTAINER_PREFIX}findViewById(${RESOURCE_ID}); 2 | -------------------------------------------------------------------------------- /src/main/resources/OnClickListener_template: -------------------------------------------------------------------------------- 1 | @Override 2 | public void onClick(View view) { 3 | switch (view.getId()) { 4 | ${CASES} 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/main/resources/Getter_Case_template: -------------------------------------------------------------------------------- 1 | private ${RESOURCE_TYPE} get${RESOURCE_NAME_CAPITALIZED}(){ 2 | return (${RESOURCE_TYPE}) ${CONTAINER_PREFIX}findViewById(${RESOURCE_ID}); 3 | } 4 | 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .classpath 2 | .project 3 | .settings 4 | target 5 | 6 | # SQLite local database files. 7 | *.db 8 | *.exe 9 | 10 | # intelij files 11 | *.iml 12 | /.idea 13 | /.idea/* 14 | 15 | # MacOS 16 | .DS_Store 17 | 18 | 19 | -------------------------------------------------------------------------------- /src/main/resources/BButton_Case_template: -------------------------------------------------------------------------------- 1 | @OnClick(${RESOURCE_ID}) void on${RESOURCE_NAME_CAPITALIZED}Click() { 2 | //TODO implement 3 | } 4 | 5 | @OnLongClick(${RESOURCE_ID}) boolean on${RESOURCE_NAME_CAPITALIZED}LongClick() { 6 | //TODO implement 7 | return true; 8 | } 9 | 10 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/extractor/string/StringExtractor.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.extractor.string; 2 | 3 | /** 4 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 5 | */ 6 | public interface StringExtractor { 7 | 8 | public T extractFromString(String string); 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/codegeneration/builders/CodeBuilder.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.codegeneration.builders; 2 | 3 | /** 4 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 5 | */ 6 | public interface CodeBuilder { 7 | 8 | String builtString(); 9 | 10 | String getKey(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/codegeneration/templates/TemplatesProvider.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.codegeneration.templates; 2 | 3 | /** 4 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 5 | */ 6 | public interface TemplatesProvider { 7 | 8 | String provideTemplateForName(String templateName); 9 | } 10 | -------------------------------------------------------------------------------- /src/test/java/com/morcinek/android/codegenerator/util/InputStreamProvider.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.util; 2 | 3 | import java.io.InputStream; 4 | 5 | /** 6 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 7 | */ 8 | public class InputStreamProvider { 9 | 10 | public InputStream getStreamFromResource(String name) { 11 | return getClass().getResourceAsStream("/" + name); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/test/resources/codegeneration/menus/create_game.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 9 | -------------------------------------------------------------------------------- /src/test/resources/extractor/layouts/main_no_header.xml: -------------------------------------------------------------------------------- 1 | 5 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /src/main/resources/Menu_template: -------------------------------------------------------------------------------- 1 | @Override 2 | public boolean onCreateOptionsMenu(Menu menu) { 3 | getMenuInflater().inflate(R.menu.${RESOURCE_NAME}, menu); 4 | return super.onCreateOptionsMenu(menu); 5 | } 6 | 7 | @Override 8 | public boolean onOptionsItemSelected(MenuItem item) { 9 | switch (item.getItemId()) { 10 | ${ASSIGNMENTS} 11 | } 12 | return super.onOptionsItemSelected(item); 13 | } 14 | -------------------------------------------------------------------------------- /src/main/resources/Activity_template: -------------------------------------------------------------------------------- 1 | import android.os.Bundle; 2 | import android.app.Activity; 3 | ${IMPORTS} 4 | 5 | public class ${CLASS_NAME}Activity extends Activity ${INTERFACES} { 6 | 7 | ${FIELDS} 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.${RESOURCE_NAME}); 13 | 14 | ${ASSIGNMENTS} 15 | } 16 | 17 | ${METHODS} 18 | } 19 | -------------------------------------------------------------------------------- /src/test/resources/extractor/layouts/main_header_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/resources/BActivity_template: -------------------------------------------------------------------------------- 1 | import android.os.Bundle; 2 | import android.app.Activity; 3 | ${IMPORTS} 4 | 5 | public class ${CLASS_NAME}Activity extends Activity ${INTERFACES} { 6 | 7 | ${FIELDS} 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.${RESOURCE_NAME}); 13 | ButterKnife.bind(this); 14 | 15 | } 16 | 17 | ${METHODS} 18 | } 19 | -------------------------------------------------------------------------------- /src/test/resources/extractor/layouts/main_header_1.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/extractor/string/FileNameExtractor.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.extractor.string; 2 | 3 | import java.io.File; 4 | 5 | /** 6 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 7 | */ 8 | public class FileNameExtractor implements StringExtractor { 9 | 10 | @Override 11 | public String extractFromString(String filePath) { 12 | return new File(filePath).getName().replaceFirst(".xml", ""); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/test/resources/codegeneration/layouts/view_pager.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /src/test/resources/extractor/layouts/specific.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 13 | -------------------------------------------------------------------------------- /src/test/resources/results/activities/BSimpleViewActivity.java: -------------------------------------------------------------------------------- 1 | import android.os.Bundle; 2 | import android.app.Activity; 3 | import android.view.View; 4 | 5 | public class MainActivity extends Activity { 6 | 7 | @Bind(R.id.password) View password; 8 | @Bind(R.id.login) View login; 9 | 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | setContentView(R.layout.main); 14 | ButterKnife.bind(this); 15 | 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/test/resources/results/activities/ViewPagerActivity.java: -------------------------------------------------------------------------------- 1 | import android.os.Bundle; 2 | import android.app.Activity; 3 | import android.support.v4.view.ViewPager; 4 | 5 | public class ViewPagerActivity extends Activity { 6 | 7 | private ViewPager pager; 8 | 9 | @Override 10 | protected void onCreate(Bundle savedInstanceState) { 11 | super.onCreate(savedInstanceState); 12 | setContentView(R.layout.view_pager); 13 | 14 | pager = (ViewPager) findViewById(R.id.pager); 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/codegeneration/providers/ResourceProvidersFactory.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.codegeneration.providers; 2 | 3 | import com.morcinek.android.codegenerator.codegeneration.providers.ResourceProvider; 4 | import com.morcinek.android.codegenerator.extractor.model.Resource; 5 | 6 | /** 7 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 8 | */ 9 | public interface ResourceProvidersFactory { 10 | 11 | ResourceProvider createResourceProvider(Resource resource); 12 | } 13 | -------------------------------------------------------------------------------- /src/test/resources/results/menus/CreateGame.java: -------------------------------------------------------------------------------- 1 | @Override 2 | public boolean onCreateOptionsMenu(Menu menu) { 3 | getMenuInflater().inflate(R.menu.create_game, menu); 4 | return super.onCreateOptionsMenu(menu); 5 | } 6 | 7 | @Override 8 | public boolean onOptionsItemSelected(MenuItem item) { 9 | switch (item.getItemId()) { 10 | case R.id.action_done: 11 | //TODO implement 12 | return true; 13 | } 14 | return super.onOptionsItemSelected(item); 15 | } 16 | -------------------------------------------------------------------------------- /src/test/resources/results/activities/BSimpleActivity.java: -------------------------------------------------------------------------------- 1 | import android.os.Bundle; 2 | import android.app.Activity; 3 | import android.widget.EditText; 4 | 5 | public class ButterknifeSimpleActivity extends Activity { 6 | 7 | @Bind(R.id.password) EditText password; 8 | @Bind(R.id.username) EditText username; 9 | 10 | @Override 11 | protected void onCreate(Bundle savedInstanceState) { 12 | super.onCreate(savedInstanceState); 13 | setContentView(R.layout.butterknife_simple); 14 | ButterKnife.bind(this); 15 | 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/codegeneration/providers/ResourceProvider.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.codegeneration.providers; 2 | 3 | import java.util.Map; 4 | import java.util.Set; 5 | 6 | /** 7 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 8 | */ 9 | public interface ResourceProvider { 10 | 11 | public Map provideValues(); 12 | 13 | public Set provideInterface(); 14 | 15 | public Set provideMethod(); 16 | 17 | public Set provideAssignment(); 18 | 19 | public Set provideField(); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/extractor/PackageExtractor.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.extractor; 2 | 3 | import org.xml.sax.SAXException; 4 | 5 | import javax.xml.parsers.ParserConfigurationException; 6 | import javax.xml.xpath.XPathExpressionException; 7 | import java.io.IOException; 8 | import java.io.InputStream; 9 | 10 | /** 11 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 12 | */ 13 | public interface PackageExtractor { 14 | 15 | String extractPackageFromManifestStream(InputStream inputStream) throws 16 | ParserConfigurationException, SAXException, IOException; 17 | } 18 | -------------------------------------------------------------------------------- /src/test/resources/results/menus/Games.java: -------------------------------------------------------------------------------- 1 | @Override 2 | public boolean onCreateOptionsMenu(Menu menu) { 3 | getMenuInflater().inflate(R.menu.games, menu); 4 | return super.onCreateOptionsMenu(menu); 5 | } 6 | 7 | @Override 8 | public boolean onOptionsItemSelected(MenuItem item) { 9 | switch (item.getItemId()) { 10 | case R.id.action_refresh: 11 | //TODO implement 12 | return true; 13 | case R.id.action_settings: 14 | //TODO implement 15 | return true; 16 | } 17 | return super.onOptionsItemSelected(item); 18 | } 19 | -------------------------------------------------------------------------------- /src/test/resources/results/menus/GameSession.java: -------------------------------------------------------------------------------- 1 | @Override 2 | public boolean onCreateOptionsMenu(Menu menu) { 3 | getMenuInflater().inflate(R.menu.game_session, menu); 4 | return super.onCreateOptionsMenu(menu); 5 | } 6 | 7 | @Override 8 | public boolean onOptionsItemSelected(MenuItem item) { 9 | switch (item.getItemId()) { 10 | case R.id.action_refresh: 11 | //TODO implement 12 | return true; 13 | case R.id.action_edit: 14 | //TODO implement 15 | return true; 16 | } 17 | return super.onOptionsItemSelected(item); 18 | } 19 | -------------------------------------------------------------------------------- /src/test/resources/codegeneration/layouts/butterknife_simple.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 12 | 13 | 17 | 18 | -------------------------------------------------------------------------------- /src/test/resources/codegeneration/menus/game_session.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 15 | -------------------------------------------------------------------------------- /src/test/resources/codegeneration/menus/games.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 10 | 15 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/extractor/model/Resource.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.extractor.model; 2 | 3 | /** 4 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 5 | */ 6 | public class Resource { 7 | 8 | private ResourceId resourceId; 9 | 10 | private ResourceType resourceType; 11 | 12 | public Resource(ResourceId resourceId, ResourceType resourceType) { 13 | this.resourceId = resourceId; 14 | this.resourceType = resourceType; 15 | } 16 | 17 | public ResourceId getResourceId() { 18 | return resourceId; 19 | } 20 | 21 | public ResourceType getResourceType() { 22 | return resourceType; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/test/java/com/morcinek/android/codegenerator/codegeneration/builders/file/PackageBuilderTest.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.codegeneration.builders.file; 2 | 3 | import org.fest.assertions.Assertions; 4 | import org.junit.Test; 5 | 6 | public class PackageBuilderTest { 7 | 8 | @Test 9 | public void testBuiltString() throws Exception { 10 | // given 11 | PackageBuilder packageBuilder = new PackageBuilder("com.morcinek.grouplaying"); 12 | 13 | // when 14 | String builtString = packageBuilder.builtString(); 15 | 16 | // then 17 | Assertions.assertThat(builtString).isNotNull().isEqualTo("package com.morcinek.grouplaying;\n\n"); 18 | } 19 | } -------------------------------------------------------------------------------- /src/test/resources/results/activities/MainActivity.java: -------------------------------------------------------------------------------- 1 | import android.os.Bundle; 2 | import android.app.Activity; 3 | import android.widget.Button; 4 | 5 | public class MainActivity extends Activity implements OnClickListener { 6 | 7 | 8 | @Override 9 | protected void onCreate(Bundle savedInstanceState) { 10 | super.onCreate(savedInstanceState); 11 | setContentView(R.layout.main); 12 | 13 | findViewById(R.id.button).setOnClickListener(this); 14 | } 15 | 16 | @Override 17 | public void onClick(View view) { 18 | switch (view.getId()) { 19 | case R.id.button: 20 | //TODO implement 21 | break; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/extractor/model/ResourceId.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.extractor.model; 2 | 3 | /** 4 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 5 | */ 6 | public class ResourceId { 7 | 8 | private String name; 9 | 10 | private String namespace; 11 | 12 | public ResourceId(String name) { 13 | this.name = name; 14 | } 15 | 16 | public ResourceId(String name, String namespace) { 17 | this.name = name; 18 | this.namespace = namespace; 19 | } 20 | 21 | public String getName() { 22 | return name; 23 | } 24 | 25 | public String getNamespace() { 26 | return namespace; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/codegeneration/builders/file/ResourceNameBuilder.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.codegeneration.builders.file; 2 | 3 | import com.morcinek.android.codegenerator.codegeneration.builders.CodeBuilder; 4 | 5 | /** 6 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 7 | */ 8 | public class ResourceNameBuilder implements CodeBuilder { 9 | 10 | private String fileName; 11 | 12 | public ResourceNameBuilder(String fileName) { 13 | this.fileName = fileName; 14 | } 15 | 16 | @Override 17 | public String builtString() { 18 | return fileName; 19 | } 20 | 21 | @Override 22 | public String getKey() { 23 | return "RESOURCE_NAME"; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/extractor/ResourceExtractor.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.extractor; 2 | 3 | import com.morcinek.android.codegenerator.extractor.model.Resource; 4 | import org.xml.sax.SAXException; 5 | 6 | import javax.xml.parsers.ParserConfigurationException; 7 | import javax.xml.xpath.XPathExpressionException; 8 | import java.io.IOException; 9 | import java.io.InputStream; 10 | import java.util.List; 11 | 12 | /** 13 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 14 | */ 15 | public interface ResourceExtractor { 16 | 17 | List extractResourceObjectsFromStream(InputStream inputStream) throws XPathExpressionException, 18 | ParserConfigurationException, SAXException, IOException; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/extractor/string/ResourceTypeExtractor.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.extractor.string; 2 | 3 | import com.morcinek.android.codegenerator.extractor.model.ResourceType; 4 | 5 | /** 6 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 7 | */ 8 | public class ResourceTypeExtractor implements StringExtractor { 9 | 10 | @Override 11 | public ResourceType extractFromString(String typeName) { 12 | int lastDot = typeName.lastIndexOf("."); 13 | if (lastDot == -1) { 14 | return new ResourceType(typeName); 15 | } else { 16 | return new ResourceType(typeName.substring(lastDot + 1), typeName.substring(0, lastDot)); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/morcinek/android/codegenerator/codegeneration/builders/file/PackageBuilder.java: -------------------------------------------------------------------------------- 1 | package com.morcinek.android.codegenerator.codegeneration.builders.file; 2 | 3 | import com.morcinek.android.codegenerator.codegeneration.builders.CodeBuilder; 4 | 5 | /** 6 | * Copyright 2014 Tomasz Morcinek. All rights reserved. 7 | */ 8 | public class PackageBuilder implements CodeBuilder { 9 | 10 | private String packageName; 11 | 12 | public PackageBuilder(String packageName) { 13 | this.packageName = packageName; 14 | } 15 | 16 | @Override 17 | public String builtString() { 18 | return String.format("package %s;\n\n", packageName); 19 | } 20 | 21 | @Override 22 | public String getKey() { 23 | return "PACKAGE"; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/test/resources/extractor/layouts/layout.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 |