Minion

Additional

Language
Java
Version
v1.3 (Nov 9, 2021)
Created
Jul 25, 2017
Updated
Mar 28, 2023 (Retired)
Owner
Igor Solkin (solkin)
Contributor
Igor Solkin (solkin)
1
Activity
Badge
Generate
Download
Source code

Minion for Android

Minion is a handy group-key-value data storage library, powered by INI format. Let you parse and store INI format. Designed with modern fluent interface.

Add dependency

Step 1. Add the JitPack repository to your build file

allprojects {
 repositories {
  ...
  maven { url 'https://jitpack.io' }
 }
}

Step 2. Add the dependency

implementation 'com.github.solkin:minion-android:1.3'

Create async Minion for file

FileStorage storage = FileStorage.create(file);
Minion minion = Minion.lets()
        .load(storage)
        .and()
        .store(storage)
        .async(new ResultCallback() {

            void onReady(Minion minion) {
             // Data successfully loaded.
            }

            void onFailure(Exception ex) {
             // Something went wrong.
            }
        });

Save

Save data to specified storage.

minion.store();

Also, if you created Minion async, you may listen for operation result with callback.

minion.store(new ResultCallback() {

    void onReady(Minion minion) {
     // Data successfully saved.
    }

    void onFailure(Exception ex) {
     // Something went wrong.
    }
});

Parse INI from string

Parses INI from specified string synchronously.

Readable storage = StringStorage.create("[group]\nkey=value\nkey2=value2");
Minion minion = Minion.lets()
        .load(storage)
        .sync();

Set values for specified group and key

If no such group or key exist, they will be created.

minion.setValue("user", "name", "Michael");

It's also extremely easy to set an array of values.

minion.setValue("music", "genres", "Classical", "Lounge", "Dance", "Pop");

Get values for specified group and key

If no such group exist, it will be created.

String name = minion.getValue("user", "name");

Or you can obtain array of values.

String[] genres = minion.getValues("music", "genres");

Get all groups

Returns all group names.

Set<String> names = minion.getGroupNames();

Returns all groups with records.

List<IniGroup> groups = minion.getGroups();

Remove record

Of course, you may just simply remove key and value. Function removeRecord will return removed record. If it doesn't exist, method will return null.

IniRecord record = minion.removeRecord("user", "name");

Remove group

Minion allows to remove whole group of records too. Function removeGroup will return removed group with removed records. If it doesn't exist, method will return null.

IniGroup group = minion.removeGroup("music");

Clear all

If you need to remove all groups (and, also, all records), you can call method clear:

minion.clear();

How it works

Minion based on stupidly simple plain-text INI format, it parses, compiles and deliver access blazingly fast. Library is extra-lightweight (~25Kb) and contain no any dependencies. You can use Minion to store some prefs or form-specific data. Simply than ever.

License

Copyright 2021 Igor Solkin

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.